Home | History | Annotate | Download | only in sfnt

Lines Matching defs:cmap

5 /*    TrueType character mapping table (cmap) support (body).              */
55 tt_cmap_init( TT_CMap cmap,
58 cmap->data = table;
118 tt_cmap0_char_index( TT_CMap cmap,
121 FT_Byte* table = cmap->data;
129 tt_cmap0_char_next( TT_CMap cmap,
132 FT_Byte* table = cmap->data;
155 tt_cmap0_get_info( TT_CMap cmap,
158 FT_Byte* p = cmap->data + 4;
269 /* outside of the CMap). */
426 tt_cmap2_char_index( TT_CMap cmap,
429 FT_Byte* table = cmap->data;
464 tt_cmap2_char_next( TT_CMap cmap,
467 FT_Byte* table = cmap->data;
531 tt_cmap2_get_info( TT_CMap cmap,
534 FT_Byte* p = cmap->data + 4;
637 TT_CMapRec cmap;
652 tt_cmap4_init( TT_CMap4 cmap,
658 cmap->cmap.data = table;
661 cmap->num_ranges = FT_PEEK_USHORT( p ) >> 1;
662 cmap->cur_charcode = (FT_UInt32)0xFFFFFFFFUL;
663 cmap->cur_gindex = 0;
670 tt_cmap4_set_range( TT_CMap4 cmap,
673 FT_Byte* table = cmap->cmap.data;
675 FT_UInt num_ranges = cmap->num_ranges;
684 cmap->cur_end = FT_PEEK_USHORT( p );
687 cmap->cur_start = FT_PEEK_USHORT( p );
690 cmap->cur_delta = FT_PEEK_SHORT( p );
698 cmap->cur_start == 0xFFFFU &&
699 cmap->cur_end == 0xFFFFU )
701 TT_Face face = (TT_Face)cmap->cmap.cmap.charmap.face;
707 cmap->cur_delta = 1;
714 cmap->cur_values = offset ? p + offset : NULL;
715 cmap->cur_range = range_index;
727 /* search the index of the charcode next to cmap->cur_charcode; */
732 tt_cmap4_next( TT_CMap4 cmap )
737 if ( cmap->cur_charcode >= 0xFFFFUL )
740 charcode = (FT_UInt)cmap->cur_charcode + 1;
742 if ( charcode < cmap->cur_start )
743 charcode = cmap->cur_start;
747 FT_Byte* values = cmap->cur_values;
748 FT_UInt end = cmap->cur_end;
749 FT_Int delta = cmap->cur_delta;
756 FT_Byte* p = values + 2 * ( charcode - cmap->cur_start );
769 cmap->cur_charcode = charcode;
770 cmap->cur_gindex = gindex;
785 cmap->cur_charcode = charcode;
786 cmap->cur_gindex = gindex;
794 if ( tt_cmap4_set_range( cmap, cmap->cur_range + 1 ) < 0 )
797 if ( charcode < cmap->cur_start )
798 charcode = cmap->cur_start;
802 cmap->cur_charcode = (FT_UInt32)0xFFFFFFFFUL;
803 cmap->cur_gindex = 0;
939 /* a cmap 4 is versatile and could be used for any */
946 /* routines which actually access the cmap. */
977 /* to mean missing glyph in cmap table */
995 tt_cmap4_char_map_linear( TT_CMap cmap,
1007 p = cmap->data + 6;
1024 p = cmap->data + 14; /* ends table */
1025 q = cmap->data + 16 + num_segs2; /* starts table */
1044 TT_Face face = (TT_Face)cmap->cmap.charmap.face;
1084 tt_cmap4_char_map_binary( TT_CMap cmap,
1096 p = cmap->data + 6;
1118 p = cmap->data + 14 + mid * 2;
1139 TT_Face face = (TT_Face)cmap->cmap.charmap.face;
1151 if ( cmap->flags & TT_CMAP_FLAG_OVERLAPPING )
1170 p = cmap->data + 14 + ( i - 1 ) * 2;
1196 p = cmap->data + 14 + max * 2;
1214 p = cmap->data + 14 + i * 2;
1246 p = cmap->data + 14 + mid * 2;
1278 TT_CMap4 cmap4 = (TT_CMap4)cmap;
1320 tt_cmap4_char_index( TT_CMap cmap,
1326 if ( cmap->flags & TT_CMAP_FLAG_UNSORTED )
1327 return tt_cmap4_char_map_linear( cmap, &char_code, 0 );
1329 return tt_cmap4_char_map_binary( cmap, &char_code, 0 );
1334 tt_cmap4_char_next( TT_CMap cmap,
1343 if ( cmap->flags & TT_CMAP_FLAG_UNSORTED )
1344 gindex = tt_cmap4_char_map_linear( cmap, pchar_code, 1 );
1347 TT_CMap4 cmap4 = (TT_CMap4)cmap;
1359 gindex = tt_cmap4_char_map_binary( cmap, pchar_code, 1 );
1367 tt_cmap4_get_info( TT_CMap cmap,
1370 FT_Byte* p = cmap->data + 4;
1464 tt_cmap6_char_index( TT_CMap cmap,
1467 FT_Byte* table = cmap->data;
1485 tt_cmap6_char_next( TT_CMap cmap,
1488 FT_Byte* table = cmap->data;
1526 tt_cmap6_get_info( TT_CMap cmap,
1529 FT_Byte* p = cmap->data + 4;
1708 tt_cmap8_char_index( TT_CMap cmap,
1711 FT_Byte* table = cmap->data;
1738 tt_cmap8_char_next( TT_CMap cmap,
1744 FT_Byte* table = cmap->data;
1779 tt_cmap8_get_info( TT_CMap cmap,
1782 FT_Byte* p = cmap->data + 8;
1875 tt_cmap10_char_index( TT_CMap cmap,
1878 FT_Byte* table = cmap->data;
1896 tt_cmap10_char_next( TT_CMap cmap,
1899 FT_Byte* table = cmap->data;
1928 tt_cmap10_get_info( TT_CMap cmap,
1931 FT_Byte* p = cmap->data + 8;
1992 TT_CMapRec cmap;
2003 tt_cmap12_init( TT_CMap12 cmap,
2006 cmap->cmap.data = table;
2009 cmap->num_groups = FT_PEEK_ULONG( table );
2011 cmap->valid = 0;
2070 /* search the index of the charcode next to cmap->cur_charcode */
2071 /* cmap->cur_group should be set up properly by caller */
2074 tt_cmap12_next( TT_CMap12 cmap )
2082 if ( cmap->cur_charcode >= 0xFFFFFFFFUL )
2085 char_code = cmap->cur_charcode + 1;
2087 n = cmap->cur_group;
2089 for ( n = cmap->cur_group; n < cmap->num_groups; n++ )
2091 p = cmap->cmap.data + 16 + 12 * n;
2105 cmap->cur_charcode = char_code;;
2106 cmap->cur_gindex = gindex;
2107 cmap->cur_group = n;
2115 cmap->valid = 0;
2120 tt_cmap12_char_map_binary( TT_CMap cmap,
2125 FT_Byte* p = cmap->data + 12;
2149 p = cmap->data + 16 + 12 * mid;
2169 TT_CMap12 cmap12 = (TT_CMap12)cmap;
2206 tt_cmap12_char_index( TT_CMap cmap,
2209 return tt_cmap12_char_map_binary( cmap, &char_code, 0 );
2214 tt_cmap12_char_next( TT_CMap cmap,
2217 TT_CMap12 cmap12 = (TT_CMap12)cmap;
2240 gindex = tt_cmap12_char_map_binary( cmap, pchar_code, 1 );
2248 tt_cmap12_get_info( TT_CMap cmap,
2251 FT_Byte* p = cmap->data + 8;
2312 TT_CMapRec cmap;
2323 tt_cmap13_init( TT_CMap13 cmap,
2326 cmap->cmap.data = table;
2329 cmap->num_groups = FT_PEEK_ULONG( table );
2331 cmap->valid = 0;
2390 /* search the index of the charcode next to cmap->cur_charcode */
2391 /* cmap->cur_group should be set up properly by caller */
2394 tt_cmap13_next( TT_CMap13 cmap )
2402 if ( cmap->cur_charcode >= 0xFFFFFFFFUL )
2405 char_code = cmap->cur_charcode + 1;
2407 n = cmap->cur_group;
2409 for ( n = cmap->cur_group; n < cmap->num_groups; n++ )
2411 p = cmap->cmap.data + 16 + 12 * n;
2425 cmap->cur_charcode = char_code;;
2426 cmap->cur_gindex = gindex;
2427 cmap->cur_group = n;
2435 cmap->valid = 0;
2440 tt_cmap13_char_map_binary( TT_CMap cmap,
2445 FT_Byte* p = cmap->data + 12;
2469 p = cmap->data + 16 + 12 * mid;
2488 TT_CMap13 cmap13 = (TT_CMap13)cmap;
2525 tt_cmap13_char_index( TT_CMap cmap,
2528 return tt_cmap13_char_map_binary( cmap, &char_code, 0 );
2533 tt_cmap13_char_next( TT_CMap cmap,
2536 TT_CMap13 cmap13 = (TT_CMap13)cmap;
2557 gindex = tt_cmap13_char_map_binary( cmap, pchar_code, 1 );
2564 tt_cmap13_get_info( TT_CMap cmap,
2567 FT_Byte* p = cmap->data + 8;
2622 /* standard cmap, with GIDs here */
2628 /* ranges of code points which are to be found in the standard cmap. No */
2660 TT_CMapRec cmap;
2664 * cmap 14 query functions. The data is overwritten
2675 tt_cmap14_done( TT_CMap14 cmap )
2677 FT_Memory memory = cmap->memory;
2680 cmap->max_results = 0;
2681 if ( memory != NULL && cmap->results != NULL )
2682 FT_FREE( cmap->results );
2687 tt_cmap14_ensure( TT_CMap14 cmap,
2691 FT_UInt32 old_max = cmap->max_results;
2695 if ( num_results > cmap->max_results )
2697 cmap->memory = memory;
2699 if ( FT_QRENEW_ARRAY( cmap->results, old_max, num_results ) )
2702 cmap->max_results = num_results;
2710 tt_cmap14_init( TT_CMap14 cmap,
2713 cmap->cmap.data = table;
2716 cmap->num_selectors = FT_PEEK_ULONG( table );
2717 cmap->max_results = 0;
2718 cmap->results = NULL;
2761 /* through the normal Unicode cmap, no GIDs, just check order) */
2827 tt_cmap14_char_index( TT_CMap cmap,
2830 FT_UNUSED( cmap );
2839 tt_cmap14_char_next( TT_CMap cmap,
2842 FT_UNUSED( cmap );
2851 tt_cmap14_get_info( TT_CMap cmap,
2854 FT_UNUSED( cmap );
2965 tt_cmap14_char_var_index( TT_CMap cmap,
2970 FT_Byte* p = tt_cmap14_find_variant( cmap->data + 6, variantSelector );
2982 tt_cmap14_char_map_def_binary( cmap->data + defOff, charcode ) )
2986 return ucmap->cmap.clazz->char_index( &ucmap->cmap, charcode );
2990 return tt_cmap14_char_map_nondef_binary( cmap->data + nondefOff,
2998 tt_cmap14_char_var_isdefault( TT_CMap cmap,
3002 FT_Byte* p = tt_cmap14_find_variant( cmap->data + 6, variantSelector );
3014 tt_cmap14_char_map_def_binary( cmap->data + defOff, charcode ) )
3018 tt_cmap14_char_map_nondef_binary( cmap->data + nondefOff,
3027 tt_cmap14_variants( TT_CMap cmap,
3030 TT_CMap14 cmap14 = (TT_CMap14)cmap;
3032 FT_Byte* p = cmap->data + 10;
3053 tt_cmap14_char_variants( TT_CMap cmap,
3057 TT_CMap14 cmap14 = (TT_CMap14) cmap;
3059 FT_Byte* p = cmap->data + 10;
3074 tt_cmap14_char_map_def_binary( cmap->data + defOff,
3077 tt_cmap14_char_map_nondef_binary( cmap->data + nondefOff,
3109 tt_cmap14_get_def_chars( TT_CMap cmap,
3113 TT_CMap14 cmap14 = (TT_CMap14) cmap;
3145 tt_cmap14_get_nondef_chars( TT_CMap cmap,
3149 TT_CMap14 cmap14 = (TT_CMap14) cmap;
3173 tt_cmap14_variant_chars( TT_CMap cmap,
3177 FT_Byte *p = tt_cmap14_find_variant( cmap->data + 6,
3195 return tt_cmap14_get_nondef_chars( cmap, cmap->data + nondefOff,
3198 return tt_cmap14_get_def_chars( cmap, cmap->data + defOff,
3204 TT_CMap14 cmap14 = (TT_CMap14) cmap;
3214 p = cmap->data + nondefOff;
3215 dp = cmap->data + defOff;
3222 return tt_cmap14_get_def_chars( cmap, cmap->data + defOff,
3225 return tt_cmap14_get_nondef_chars( cmap, cmap->data + nondefOff,
3385 /* parse the `cmap' table and build the corresponding TT_CMap objects */
3408 " unsupported `cmap' table format = %d\n",
3416 FT_ERROR(( "tt_face_build_cmaps: too many cmap subtables(%d) "
3435 FT_Byte* volatile cmap = table + offset;
3436 volatile FT_UInt format = TT_PEEK_USHORT( cmap );
3450 ft_validator_init( FT_VALIDATOR( &valid ), cmap, limit,
3458 /* validate this cmap sub-table */
3459 error = clazz->validate( cmap, FT_VALIDATOR( &valid ) );
3468 /* cmap somewhere special. But it would have to be in the */
3472 cmap, &charmap, &ttcmap ) )
3482 " broken cmap sub-table ignored\n" ));
3491 " unsupported cmap sub-table ignored\n" ));
3504 FT_CMap cmap = (FT_CMap)charmap;
3505 TT_CMap_Class clazz = (TT_CMap_Class)cmap->clazz;