more
This commit is contained in:
parent
983b087020
commit
1b4cbf3080
|
@ -191,7 +191,10 @@ let unicode_codepoint_of_pdfcode encoding_table glyphlist_table p =
|
||||||
with
|
with
|
||||||
Not_found -> 0
|
Not_found -> 0
|
||||||
|
|
||||||
let calculate_widths encoding firstchar lastchar subset (cmapdata : (int, int) Hashtbl.t) (hmtxdata : int array) =
|
let pdf_unit unitsPerEm x =
|
||||||
|
int_of_float (float_of_int x *. 1000. /. float_of_int unitsPerEm)
|
||||||
|
|
||||||
|
let calculate_widths unitsPerEm encoding firstchar lastchar subset (cmapdata : (int, int) Hashtbl.t) (hmtxdata : int array) =
|
||||||
if lastchar < firstchar then failwith "lastchar < firschar" else
|
if lastchar < firstchar then failwith "lastchar < firschar" else
|
||||||
if !dbg then List.iter (fun (a, b) -> Printf.printf "%i -> %i\n" a b) (sort compare (list_of_hashtbl cmapdata));
|
if !dbg then List.iter (fun (a, b) -> Printf.printf "%i -> %i\n" a b) (sort compare (list_of_hashtbl cmapdata));
|
||||||
let encoding_table = Pdftext.table_of_encoding encoding in
|
let encoding_table = Pdftext.table_of_encoding encoding in
|
||||||
|
@ -209,7 +212,7 @@ let calculate_widths encoding firstchar lastchar subset (cmapdata : (int, int) H
|
||||||
if !dbg then Printf.printf "glyph number %i --> " glyphnum;
|
if !dbg then Printf.printf "glyph number %i --> " glyphnum;
|
||||||
let width = hmtxdata.(glyphnum) in
|
let width = hmtxdata.(glyphnum) in
|
||||||
if !dbg then Printf.printf "width %i\n" width;
|
if !dbg then Printf.printf "width %i\n" width;
|
||||||
width
|
pdf_unit unitsPerEm width
|
||||||
with e -> if !dbg then Printf.printf "no width for %i\n" code; 0)
|
with e -> if !dbg then Printf.printf "no width for %i\n" code; 0)
|
||||||
|
|
||||||
let calculate_maxwidth hmtxdata =
|
let calculate_maxwidth hmtxdata =
|
||||||
|
@ -302,7 +305,9 @@ let parse ?(subset=[]) data ~encoding =
|
||||||
| [] -> raise (Pdf.PDFError "No maxp table found in TrueType font")
|
| [] -> raise (Pdf.PDFError "No maxp table found in TrueType font")
|
||||||
in
|
in
|
||||||
let b = mk_b (i32toi headoffset) in
|
let b = mk_b (i32toi headoffset) in
|
||||||
discard_bytes b 36;
|
discard_bytes b 18;
|
||||||
|
let unitsPerEm = read_ushort b in
|
||||||
|
discard_bytes b 16;
|
||||||
let minx = read_fword b in
|
let minx = read_fword b in
|
||||||
let miny = read_fword b in
|
let miny = read_fword b in
|
||||||
let maxx = read_fword b in
|
let maxx = read_fword b in
|
||||||
|
@ -329,7 +334,7 @@ let parse ?(subset=[]) data ~encoding =
|
||||||
| (_, _, o, _)::_ -> read_hmtx_table numOfLongHorMetrics (mk_b (i32toi o))
|
| (_, _, o, _)::_ -> read_hmtx_table numOfLongHorMetrics (mk_b (i32toi o))
|
||||||
| [] -> raise (Pdf.PDFError "No hmtx table found in TrueType font")
|
| [] -> raise (Pdf.PDFError "No hmtx table found in TrueType font")
|
||||||
in
|
in
|
||||||
let widths = calculate_widths encoding firstchar lastchar subset !glyphcodes hmtxdata in
|
let widths = calculate_widths unitsPerEm encoding firstchar lastchar subset !glyphcodes hmtxdata in
|
||||||
let maxwidth = calculate_maxwidth hmtxdata in
|
let maxwidth = calculate_maxwidth hmtxdata in
|
||||||
let stemv = calculate_stemv () in
|
let stemv = calculate_stemv () in
|
||||||
let b = mk_b (i32toi locaoffset) in
|
let b = mk_b (i32toi locaoffset) in
|
||||||
|
|
Loading…
Reference in New Issue