more
This commit is contained in:
parent
b1593db692
commit
022ada3283
|
@ -150,14 +150,26 @@ let read_format_4_encoding_table b =
|
||||||
done;
|
done;
|
||||||
t
|
t
|
||||||
|
|
||||||
|
let print_encoding_table (table : (int, int) Hashtbl.t) =
|
||||||
|
let l = list_of_hashtbl table in
|
||||||
|
Printf.printf "There are %i characters in this font\n" (length l);
|
||||||
|
iter
|
||||||
|
(fun (c, gi) -> Printf.printf "Char %04X is at glyph index %i\n" c gi)
|
||||||
|
l
|
||||||
|
|
||||||
let read_encoding_table fmt length version b =
|
let read_encoding_table fmt length version b =
|
||||||
match fmt with
|
match fmt with
|
||||||
| 0 ->
|
| 0 ->
|
||||||
|
Printf.printf "read_encoding_table: format 0\n";
|
||||||
let t = null_hash () in
|
let t = null_hash () in
|
||||||
for x = 0 to 255 do Hashtbl.add t x (read_byte b) done;
|
for x = 0 to 255 do Hashtbl.add t x (read_byte b) done;
|
||||||
t
|
t
|
||||||
| 4 -> read_format_4_encoding_table b
|
| 4 ->
|
||||||
| 6 -> read_format_6_encoding_table b
|
Printf.printf "read_encoding_table: format 4\n";
|
||||||
|
read_format_4_encoding_table b
|
||||||
|
| 6 ->
|
||||||
|
Printf.printf "read_encoding_table: format 6\n";
|
||||||
|
read_format_6_encoding_table b
|
||||||
| n -> raise (Pdf.PDFError "read_encoding_table: format %i not known\n%!")
|
| n -> raise (Pdf.PDFError "read_encoding_table: format %i not known\n%!")
|
||||||
|
|
||||||
let read_loca_table indexToLocFormat numGlyphs b =
|
let read_loca_table indexToLocFormat numGlyphs b =
|
||||||
|
@ -482,9 +494,7 @@ let parse ?(subset=[]) data encoding =
|
||||||
let glyphcodes = ref (null_hash ()) in
|
let glyphcodes = ref (null_hash ()) in
|
||||||
begin match cmap with
|
begin match cmap with
|
||||||
| None ->
|
| None ->
|
||||||
let t = null_hash () in
|
for x = 0 to 255 do Hashtbl.add !glyphcodes x x done
|
||||||
for x = 0 to 255 do Hashtbl.add t x x done;
|
|
||||||
glyphcodes := t
|
|
||||||
| Some (cmapoffset, cmaplength) ->
|
| Some (cmapoffset, cmaplength) ->
|
||||||
let b = mk_b (i32toi cmapoffset) in
|
let b = mk_b (i32toi cmapoffset) in
|
||||||
let cmap_version = read_ushort b in
|
let cmap_version = read_ushort b in
|
||||||
|
@ -503,7 +513,9 @@ let parse ?(subset=[]) data encoding =
|
||||||
let version = read_ushort b in
|
let version = read_ushort b in
|
||||||
if !dbg then Printf.printf "subtable has format %i, length %i, version %i\n" fmt lngth version;
|
if !dbg then Printf.printf "subtable has format %i, length %i, version %i\n" fmt lngth version;
|
||||||
let got_glyphcodes = read_encoding_table fmt length version b in
|
let got_glyphcodes = read_encoding_table fmt length version b in
|
||||||
glyphcodes := got_glyphcodes
|
print_encoding_table got_glyphcodes;
|
||||||
|
Hashtbl.iter (Hashtbl.add !glyphcodes) got_glyphcodes;
|
||||||
|
Printf.printf "Retrieved %i cmap entries in total\n" (length (list_of_hashtbl !glyphcodes))
|
||||||
done;
|
done;
|
||||||
end;
|
end;
|
||||||
let maxpoffset, maxplength =
|
let maxpoffset, maxplength =
|
||||||
|
|
Loading…
Reference in New Issue