"Fossies" - the Fresh Open Source Software Archive

Member "SDL2_ttf-2.20.2/external/freetype/src/autofit/afblue.hin" (25 May 2022, 5250 Bytes) of package /linux/misc/SDL2_ttf-2.20.2.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /****************************************************************************
    2  *
    3  * afblue.h
    4  *
    5  *   Auto-fitter data for blue strings (specification).
    6  *
    7  * Copyright (C) 2013-2022 by
    8  * David Turner, Robert Wilhelm, and Werner Lemberg.
    9  *
   10  * This file is part of the FreeType project, and may only be used,
   11  * modified, and distributed under the terms of the FreeType project
   12  * license, LICENSE.TXT.  By continuing to use, modify, or distribute
   13  * this file you indicate that you have read the license and
   14  * understand and accept it fully.
   15  *
   16  */
   17 
   18 
   19 #ifndef AFBLUE_H_
   20 #define AFBLUE_H_
   21 
   22 
   23 FT_BEGIN_HEADER
   24 
   25 
   26   /* an auxiliary macro to decode a UTF-8 character -- since we only use */
   27   /* hard-coded, self-converted data, no error checking is performed     */
   28 #define GET_UTF8_CHAR( ch, p )                      \
   29           do                                        \
   30           {                                         \
   31             ch = (unsigned char)*p++;               \
   32             if ( ch >= 0x80 )                       \
   33             {                                       \
   34               FT_UInt  len_;                        \
   35                                                     \
   36                                                     \
   37               if ( ch < 0xE0 )                      \
   38               {                                     \
   39                 len_ = 1;                           \
   40                 ch  &= 0x1F;                        \
   41               }                                     \
   42               else if ( ch < 0xF0 )                 \
   43               {                                     \
   44                 len_ = 2;                           \
   45                 ch  &= 0x0F;                        \
   46               }                                     \
   47               else                                  \
   48               {                                     \
   49                 len_ = 3;                           \
   50                 ch  &= 0x07;                        \
   51               }                                     \
   52                                                     \
   53               for ( ; len_ > 0; len_-- )            \
   54                 ch = ( ch << 6 ) | ( *p++ & 0x3F ); \
   55             }                                       \
   56           } while ( 0 )
   57 
   58 
   59   /*************************************************************************/
   60   /*************************************************************************/
   61   /*****                                                               *****/
   62   /*****                    B L U E   S T R I N G S                    *****/
   63   /*****                                                               *****/
   64   /*************************************************************************/
   65   /*************************************************************************/
   66 
   67   /* At the bottommost level, we define strings for finding blue zones. */
   68 
   69 
   70 #define AF_BLUE_STRING_MAX_LEN  @AF_BLUE_STRING_MAX_LEN@
   71 
   72   /* The AF_Blue_String enumeration values are offsets into the */
   73   /* `af_blue_strings' array.                                   */
   74 
   75   typedef enum  AF_Blue_String_
   76   {
   77 @AF_BLUE_STRING_ENUM@
   78 
   79     AF_BLUE_STRING_MAX   /* do not remove */
   80 
   81   } AF_Blue_String;
   82 
   83 
   84   FT_LOCAL_ARRAY( char )
   85   af_blue_strings[];
   86 
   87 
   88   /*************************************************************************/
   89   /*************************************************************************/
   90   /*****                                                               *****/
   91   /*****                 B L U E   S T R I N G S E T S                 *****/
   92   /*****                                                               *****/
   93   /*************************************************************************/
   94   /*************************************************************************/
   95 
   96   /* The next level is to group blue strings into style-specific sets. */
   97 
   98 
   99   /* Properties are specific to a writing system.  We assume that a given  */
  100   /* blue string can't be used in more than a single writing system, which */
  101   /* is a safe bet.                                                        */
  102 #define AF_BLUE_PROPERTY_LATIN_TOP       ( 1U << 0 )  /* must have value 1 */
  103 #define AF_BLUE_PROPERTY_LATIN_SUB_TOP   ( 1U << 1 )
  104 #define AF_BLUE_PROPERTY_LATIN_NEUTRAL   ( 1U << 2 )
  105 #define AF_BLUE_PROPERTY_LATIN_X_HEIGHT  ( 1U << 3 )
  106 #define AF_BLUE_PROPERTY_LATIN_LONG      ( 1U << 4 )
  107 
  108 #define AF_BLUE_PROPERTY_CJK_TOP    ( 1U << 0 )       /* must have value 1 */
  109 #define AF_BLUE_PROPERTY_CJK_HORIZ  ( 1U << 1 )       /* must have value 2 */
  110 #define AF_BLUE_PROPERTY_CJK_RIGHT  AF_BLUE_PROPERTY_CJK_TOP
  111 
  112 
  113 #define AF_BLUE_STRINGSET_MAX_LEN  @AF_BLUE_STRINGSET_MAX_LEN@
  114 
  115   /* The AF_Blue_Stringset enumeration values are offsets into the */
  116   /* `af_blue_stringsets' array.                                   */
  117 
  118   typedef enum  AF_Blue_Stringset_
  119   {
  120 @AF_BLUE_STRINGSET_ENUM@
  121 
  122     AF_BLUE_STRINGSET_MAX   /* do not remove */
  123 
  124   } AF_Blue_Stringset;
  125 
  126 
  127   typedef struct  AF_Blue_StringRec_
  128   {
  129     AF_Blue_String  string;
  130     FT_UShort       properties;
  131 
  132   } AF_Blue_StringRec;
  133 
  134 
  135   FT_LOCAL_ARRAY( AF_Blue_StringRec )
  136   af_blue_stringsets[];
  137 
  138 /* */
  139 
  140 FT_END_HEADER
  141 
  142 
  143 #endif /* AFBLUE_H_ */
  144 
  145 
  146 /* END */