1 |
2005-11-29 Chia-I Wu <b90201047@ntu.edu.tw> |
2005-11-29 Chia-I Wu <b90201047@ntu.edu.tw> |
2 |
|
|
3 |
|
Major update to distinguish between unsorted and overlapped segments |
4 |
|
for cmap format 4. For overlapped but sorted segments, which is |
5 |
|
previously considered unsorted, we still use binary search. |
6 |
|
|
7 |
|
* src/sfnt/ttcmap.h (struct TT_CMapRec_): Replace `unsorted' by |
8 |
|
`flags'. |
9 |
|
(TT_CMAP_FLAG_UNSORTED, TT_CMAP_FLAG_OVERLAPPED): New macros. |
10 |
|
|
11 |
|
* src/sfnt/ttcmap.c (OPT_CMAP4): Removed as it is always defined. |
12 |
|
(struct TT_CMap4Rec_): Remove `old_charcode' and `table_length'. |
13 |
|
(tt_cmap4_reset): Removed. |
14 |
|
(tt_cmap4_init): Updated accordingly. |
15 |
|
(tt_cmap4_next): Updated accordingly. |
16 |
|
Take care of overlapped segments. |
17 |
|
(tt_cmap4_validate): Make sure the subtable is large enough. |
18 |
|
Do not check glyph_ids because some fonts set the length wrongly. |
19 |
|
Also, when all segments have offset 0, glyph_ids is always invalid. It |
20 |
|
does not cause any problem so far only because the check misses |
21 |
|
equality. |
22 |
|
Distinguish between unsorted and overlapped segments. |
23 |
|
(tt_cmap4_char_map_linear, tt_cmap4_char_map_binary): New functions to |
24 |
|
do "charcode => glyph index" by linear/binary search. |
25 |
|
(tt_cmap4_char_index, tt_cmap4_char_next): Use |
26 |
|
tt_cmap4_char_map_linear and tt_cmap4_char_map_binary. |
27 |
|
(tt_face_build_cmaps): Treat the return value of validator as flags |
28 |
|
for cmap. |
29 |
|
|
30 |
|
2005-11-29 Chia-I Wu <b90201047@ntu.edu.tw> |
31 |
|
|
32 |
* src/sfnt/ttcmap.c (struct TT_CMap12Rec_, tt_cmap12_init, |
* src/sfnt/ttcmap.c (struct TT_CMap12Rec_, tt_cmap12_init, |
33 |
tt_cmap12_next): New struct/function for fast "next char". |
tt_cmap12_next): New struct/function for fast "next char". |
34 |
(tt_cmap12_char_map_binary): New function to do "charcode => glyph |
(tt_cmap12_char_map_binary): New function to do "charcode => glyph |