mirror of
https://github.com/johnwhitington/cpdf-source.git
synced 2025-04-06 22:51:11 +02:00
harded against attempts to build empty truetype fonts
This commit is contained in:
parent
65fec4d275
commit
b0efb696f0
@ -437,6 +437,7 @@ let
|
|||||||
iter (iter (fun x -> Hashtbl.replace used x ())) codepoints)
|
iter (iter (fun x -> Hashtbl.replace used x ())) codepoints)
|
||||||
pages
|
pages
|
||||||
(map (fun x -> List.nth ps (x - 1)) pages);
|
(map (fun x -> List.nth ps (x - 1)) pages);
|
||||||
|
if Hashtbl.length used = 0 then pdf else (* Avoid trying to build truetype font with no used set. *)
|
||||||
let realfontname = ref fontname in
|
let realfontname = ref fontname in
|
||||||
let font, fontpack =
|
let font, fontpack =
|
||||||
match cpdffont with
|
match cpdffont with
|
||||||
|
@ -89,9 +89,10 @@ let make_fontpack_hashtable fs =
|
|||||||
table
|
table
|
||||||
|
|
||||||
let embed_truetype pdf ~fontfile ~fontname ~codepoints ~encoding =
|
let embed_truetype pdf ~fontfile ~fontname ~codepoints ~encoding =
|
||||||
let fs = Cpdftruetype.parse ~subset:codepoints fontfile encoding in
|
if codepoints = [] then ([], null_hash ()) else (* Can't call Cpdftruetype.parse with empty codepoint set. *)
|
||||||
let subsets_and_their_fonts = map (make_single_font ~fontname ~encoding pdf) fs in
|
let fs = Cpdftruetype.parse ~subset:codepoints fontfile encoding in
|
||||||
(map snd subsets_and_their_fonts, make_fontpack_hashtable subsets_and_their_fonts)
|
let subsets_and_their_fonts = map (make_single_font ~fontname ~encoding pdf) fs in
|
||||||
|
(map snd subsets_and_their_fonts, make_fontpack_hashtable subsets_and_their_fonts)
|
||||||
|
|
||||||
let rec collate_runs cfn a = function
|
let rec collate_runs cfn a = function
|
||||||
| [] -> rev (map rev a)
|
| [] -> rev (map rev a)
|
||||||
|
@ -605,6 +605,7 @@ let parse ~subset data encoding =
|
|||||||
let subset_1, subsets_2 = find_main encoding subset in
|
let subset_1, subsets_2 = find_main encoding subset in
|
||||||
let flags_1 = calculate_flags false italicangle in
|
let flags_1 = calculate_flags false italicangle in
|
||||||
let flags_2 = calculate_flags true italicangle in
|
let flags_2 = calculate_flags true italicangle in
|
||||||
|
if subset_1 = [] then raise (Pdf.PDFError "Cpdftruetype: Refusing to create font with no characters") else
|
||||||
let firstchar_1, lastchar_1 = extremes (sort compare subset_1) in
|
let firstchar_1, lastchar_1 = extremes (sort compare subset_1) in
|
||||||
let firstchars_2, lastchars_2 = split (map (fun subset -> (33, length subset + 33 - 1)) subsets_2) in
|
let firstchars_2, lastchars_2 = split (map (fun subset -> (33, length subset + 33 - 1)) subsets_2) in
|
||||||
let numOfLongHorMetrics =
|
let numOfLongHorMetrics =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user