Ready for testing of -paras

This commit is contained in:
John Whitington 2024-09-19 15:41:56 +01:00
parent 76eaa3da21
commit a3d7a278d1
2 changed files with 15 additions and 5 deletions

View File

@ -428,9 +428,13 @@ let rec ops_of_drawop struct_tree dryrun pdf endpage filename bates batespad num
if dryrun then iter (fun c -> Hashtbl.replace (res ()).current_fontpack_codepoints c ()) (Pdftext.codepoints_of_utf8 s); if dryrun then iter (fun c -> Hashtbl.replace (res ()).current_fontpack_codepoints c ()) (Pdftext.codepoints_of_utf8 s);
fst (runs_of_utf8 s) fst (runs_of_utf8 s)
| Para (j, w, s) -> | Para (j, w, s) ->
let s = hd s in (* FIXME *) if dryrun then iter (iter (fun c -> Hashtbl.replace (res ()).current_fontpack_codepoints c ())) (map Pdftext.codepoints_of_utf8 s);
if dryrun then iter (fun c -> Hashtbl.replace (res ()).current_fontpack_codepoints c ()) (Pdftext.codepoints_of_utf8 s); let first = ref true in
format_paragraph j w s flatten
(map
(function para ->
if not !first then ([Pdfops.Op_T']) else (clear first; []) @ format_paragraph j w para)
s)
| Leading f -> [Pdfops.Op_TL f] | Leading f -> [Pdfops.Op_TL f]
| CharSpace f -> [Pdfops.Op_Tc f] | CharSpace f -> [Pdfops.Op_Tc f]
| WordSpace f -> [Pdfops.Op_Tw f] | WordSpace f -> [Pdfops.Op_Tw f]

View File

@ -372,12 +372,18 @@ let addpara s =
let j, w, s = jws s in let j, w, s = jws s in
addop (Cpdfdraw.Para (j, w, [s])) addop (Cpdfdraw.Para (j, w, [s]))
let split_on_newline s = [s] let rec split_on_newlines a = function
| 0x005c::0x004e::t -> rev a::split_on_newlines [] t
| h::t -> split_on_newlines (h::a) t
| [] -> if a = [] then [] else [rev a]
let split_on_newlines s =
map Pdftext.utf8_of_codepoints (split_on_newlines [] (Pdftext.codepoints_of_utf8 s))
let addparas s = let addparas s =
begin match !drawops with _::_::_ -> () | _ -> error "-paras must be in a -bt / -et section" end; begin match !drawops with _::_::_ -> () | _ -> error "-paras must be in a -bt / -et section" end;
add_default_fontpack (!getfontname ()); add_default_fontpack (!getfontname ());
addop (Cpdfdraw.Font (!getfontname (), !getfontsize ())); addop (Cpdfdraw.Font (!getfontname (), !getfontsize ()));
let j, w, s = jws s in let j, w, s = jws s in
let splits = split_on_newline s in let splits = split_on_newlines s in
addop (Cpdfdraw.Para (j, w, splits)) addop (Cpdfdraw.Para (j, w, splits))