summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'pdf/pdf_text.h')
-rw-r--r--pdf/pdf_text.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/pdf/pdf_text.h b/pdf/pdf_text.h
new file mode 100644
index 00000000..bd62d38e
--- /dev/null
+++ b/pdf/pdf_text.h
@@ -0,0 +1,59 @@
+/* Copyright (C) 2018-2021 Artifex Software, Inc.
+ All Rights Reserved.
+
+ This software is provided AS-IS with no warranty, either express or
+ implied.
+
+ This software is distributed under license and may not be copied,
+ modified or distributed except as expressly authorized under the terms
+ of the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
+ CA 94945, U.S.A., +1(415)492-9861, for further information.
+*/
+
+/* Text operations for the PDF interpreter */
+
+#ifndef PDF_TEXT_OPERATORS
+#define PDF_TEXT_OPERATORS
+
+typedef struct pdf_text_tracking_s
+{
+ int text_block_depth;
+ gs_matrix initial_CTM;
+ gs_matrix saved_Tm;
+ gs_matrix saved_Tl;
+ int initial_gsave_depth;
+ void *next_block;
+} pdf_text_tracking;
+
+int pdfi_BT(pdf_context *ctx);
+int pdfi_ET(pdf_context *ctx);
+int pdfi_T_star(pdf_context *ctx);
+int pdfi_Tc(pdf_context *ctx);
+int pdfi_Td(pdf_context *ctx);
+int pdfi_TD(pdf_context *ctx);
+int pdfi_Tj(pdf_context *ctx);
+int pdfi_TJ(pdf_context *ctx);
+int pdfi_TL(pdf_context *ctx);
+int pdfi_Tm(pdf_context *ctx);
+int pdfi_Tr(pdf_context *ctx);
+int pdfi_Ts(pdf_context *ctx);
+int pdfi_Tw(pdf_context *ctx);
+int pdfi_Tz(pdf_context *ctx);
+int pdfi_backslash(pdf_context *ctx);
+int pdfi_singlequote(pdf_context *ctx);
+int pdfi_doublequote(pdf_context *ctx);
+
+/* Returns the bounding box of a string drawn with the current graphics state.
+ Stroking implies a slightly larger bounding box - the parameter is ignored
+ for Type 3 fonts. Also returns the accumlated "advance width" of all the glyphs
+ in the string.
+ This can be an expensive operation, so should be used sparingly, with care.
+ NOTE: the bounding box this generates has llx and lly at 0,0,
+ so is arguably not a "real" bounding box
+ */
+int pdfi_string_bbox(pdf_context *ctx, pdf_string *s, gs_rect *bboxout, gs_point *advance_width, bool for_stroke);
+
+#endif