more
This commit is contained in:
parent
4cbdbbb34f
commit
c3eaf2597a
|
@ -221,6 +221,28 @@ let calculate_widths unitsPerEm encoding firstchar lastchar subset (cmapdata : (
|
||||||
let calculate_maxwidth unitsPerEm hmtxdata =
|
let calculate_maxwidth unitsPerEm hmtxdata =
|
||||||
pdf_unit unitsPerEm (hd (sort (fun a b -> compare b a) (Array.to_list hmtxdata)))
|
pdf_unit unitsPerEm (hd (sort (fun a b -> compare b a) (Array.to_list hmtxdata)))
|
||||||
|
|
||||||
|
let remove_unneeded_tables tables d =
|
||||||
|
let tables = Array.of_list (sort (fun (_, _, o, _) (_, _, o', _) -> compare o o') tables) in
|
||||||
|
let tablesout = ref [] in
|
||||||
|
let cut = ref 0l in
|
||||||
|
Printf.printf "***Input:\n";
|
||||||
|
Array.iteri
|
||||||
|
(fun i (tag, checkSum, offset, ttlength) ->
|
||||||
|
Printf.printf "tag = %li = %s, offset = %li\n" tag (string_of_tag tag) offset;
|
||||||
|
if mem (string_of_tag tag) required_tables then
|
||||||
|
tablesout := (tag, checkSum, i32sub offset !cut, ttlength)::!tablesout
|
||||||
|
else
|
||||||
|
cut := i32add !cut (match tables.(i + 1) with (_, _, offset', _) -> i32sub offset' offset))
|
||||||
|
tables;
|
||||||
|
Printf.printf "***Output:\n";
|
||||||
|
iter
|
||||||
|
(fun (tag, checkSum, offset, ttlength) ->
|
||||||
|
Printf.printf "tag = %li = %s, offset = %li\n" tag (string_of_tag tag) offset)
|
||||||
|
(rev !tablesout);
|
||||||
|
(* Write new header *)
|
||||||
|
(* Copy tables from original file based on their offset and imputed length *)
|
||||||
|
d
|
||||||
|
|
||||||
let parse ?(subset=[]) data ~encoding =
|
let parse ?(subset=[]) data ~encoding =
|
||||||
let subset = map fst subset in
|
let subset = map fst subset in
|
||||||
let mk_b byte_offset = bitbytes_of_input (let i = input_of_bytes data in i.seek_in byte_offset; i) in
|
let mk_b byte_offset = bitbytes_of_input (let i = input_of_bytes data in i.seek_in byte_offset; i) in
|
||||||
|
@ -343,7 +365,7 @@ let parse ?(subset=[]) data ~encoding =
|
||||||
let stemv = calculate_stemv () in
|
let stemv = calculate_stemv () in
|
||||||
let b = mk_b (i32toi locaoffset) in
|
let b = mk_b (i32toi locaoffset) in
|
||||||
let offsets = read_loca_table indexToLocFormat numGlyphs b in
|
let offsets = read_loca_table indexToLocFormat numGlyphs b in
|
||||||
let subset = data in
|
let subset = remove_unneeded_tables !tables data in
|
||||||
{flags; minx; miny; maxx; maxy; italicangle; ascent; descent;
|
{flags; minx; miny; maxx; maxy; italicangle; ascent; descent;
|
||||||
capheight; stemv; xheight; avgwidth; maxwidth; firstchar; lastchar;
|
capheight; stemv; xheight; avgwidth; maxwidth; firstchar; lastchar;
|
||||||
widths; subset}
|
widths; subset}
|
||||||
|
|
Loading…
Reference in New Issue