mirror of
https://github.com/johnwhitington/cpdf-source.git
synced 2025-06-05 22:09:39 +02:00
Tidy up cpdftypeset to beign fontpacks
This commit is contained in:
@ -111,9 +111,9 @@ let typeset_table_of_contents ~font ~fontsize ~title ~bookmark pdf =
|
||||
let text = shorten_text widths (textgap -. fontsize *. 3.) text in
|
||||
let space = textgap -. Cpdftype.width_of_string widths text in
|
||||
[Cpdftype.BeginDest mark.Pdfmarks.target;
|
||||
Cpdftype.HGlue {Cpdftype.glen = indent; Cpdftype.gstretch = 0.};
|
||||
Cpdftype.HGlue indent;
|
||||
Cpdftype.Text text;
|
||||
Cpdftype.HGlue {Cpdftype.glen = space; Cpdftype.gstretch = 0.};
|
||||
Cpdftype.HGlue space;
|
||||
Cpdftype.Text label;
|
||||
Cpdftype.EndDest;
|
||||
Cpdftype.NewLine])
|
||||
@ -121,7 +121,7 @@ let typeset_table_of_contents ~font ~fontsize ~title ~bookmark pdf =
|
||||
in
|
||||
let toc_pages =
|
||||
let title =
|
||||
let glue = Cpdftype.VGlue {glen = fontsize *. 2.; gstretch = 0.} in
|
||||
let glue = Cpdftype.VGlue (fontsize *. 2.) in
|
||||
if title = "" then [] else
|
||||
flatten
|
||||
(map
|
||||
|
29
cpdftype.ml
29
cpdftype.ml
@ -6,16 +6,11 @@
|
||||
be continued... *)
|
||||
open Pdfutil
|
||||
|
||||
(* Glue *)
|
||||
type glue =
|
||||
{glen : float;
|
||||
gstretch : float}
|
||||
|
||||
(* Main type *)
|
||||
type element =
|
||||
Text of char list (* charcodes 0..255 *)
|
||||
| HGlue of glue
|
||||
| VGlue of glue
|
||||
| HGlue of float
|
||||
| VGlue of float
|
||||
| NewLine
|
||||
| NewPage
|
||||
| Font of (Pdftext.font * float)
|
||||
@ -25,7 +20,7 @@ type element =
|
||||
|
||||
let to_string_elt = function
|
||||
| Text t -> implode t
|
||||
| HGlue {glen} -> "HGLUE" ^ string_of_float glen
|
||||
| HGlue len -> "HGLUE" ^ string_of_float len
|
||||
| VGlue _ -> "VGLUE"
|
||||
| NewLine -> "NewLine"
|
||||
| NewPage -> "NewPage"
|
||||
@ -126,8 +121,8 @@ let layout lmargin rmargin papersize i =
|
||||
if needs_newline then layout_element NewLine;
|
||||
if remaining_text <> [] then layout_element (Text remaining_text)
|
||||
end
|
||||
| HGlue {glen} as glue ->
|
||||
s.xpos <- s.xpos +. glen;
|
||||
| HGlue len as glue ->
|
||||
s.xpos <- s.xpos +. len;
|
||||
o := glue :: !o;
|
||||
if s.xpos >= xpos_max then layout_element NewLine
|
||||
| NewLine ->
|
||||
@ -147,8 +142,8 @@ let paginate tmargin bmargin papersize i =
|
||||
s.ypos <- tmargin;
|
||||
let max_ypos = height -. bmargin in
|
||||
let rec process = function
|
||||
| VGlue {glen} as glue ->
|
||||
s.ypos <- s.ypos +. glen;
|
||||
| VGlue len as glue ->
|
||||
s.ypos <- s.ypos +. len;
|
||||
o := glue :: !o;
|
||||
if s.ypos > max_ypos then process NewPage
|
||||
| NewLine ->
|
||||
@ -242,13 +237,13 @@ let typeset lmargin rmargin tmargin bmargin papersize pdf i =
|
||||
s.fontsize <- fontsize;
|
||||
thispagefontnums := objnum :: !thispagefontnums;
|
||||
ops := Pdfops.Op_Tf (name, fontsize)::!ops
|
||||
| HGlue {glen} ->
|
||||
s.xpos <- s.xpos +. glen
|
||||
| VGlue {glen} ->
|
||||
s.ypos <- s.ypos +. glen
|
||||
| HGlue len ->
|
||||
s.xpos <- s.xpos +. len
|
||||
| VGlue len ->
|
||||
s.ypos <- s.ypos +. len
|
||||
| NewLine ->
|
||||
s.xpos <- lmargin;
|
||||
typeset_element (VGlue {glen = s.fontsize *. 1.3; gstretch = 0.})
|
||||
typeset_element (VGlue (s.fontsize *. 1.3))
|
||||
| NewPage ->
|
||||
write_page ();
|
||||
thispagefontnums := [];
|
||||
|
@ -1,13 +1,8 @@
|
||||
(** Experimental typesetter for cpdf *)
|
||||
|
||||
type glue =
|
||||
{glen : float;
|
||||
gstretch : float}
|
||||
|
||||
type element =
|
||||
Text of char list
|
||||
| HGlue of glue
|
||||
| VGlue of glue
|
||||
| HGlue of float
|
||||
| VGlue of float
|
||||
| NewLine
|
||||
| NewPage
|
||||
| Font of (Pdftext.font * float)
|
||||
|
Reference in New Issue
Block a user