summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-12-19 10:39:37 -0500
committerMatthias Clasen <mclasen@redhat.com>2021-12-19 10:40:34 -0500
commit6770050e74cf83830e255f1d1e9b574feb5a60fc (patch)
tree3aca4500a31b6cde94e44e2f3b3ac9a2a1d410a8
parentc0c70393f798be29e3835fa0abd04b15a6235562 (diff)
downloadpango-6770050e74cf83830e255f1d1e9b574feb5a60fc.tar.gz
Add some private api
Add some api to let us store another font in a PangoAnalysis. This will be used in the following commits.
-rw-r--r--pango/pango-item-private.h22
-rw-r--r--pango/pango-item.c41
2 files changed, 63 insertions, 0 deletions
diff --git a/pango/pango-item-private.h b/pango/pango-item-private.h
index 6e20953f..9d2fa805 100644
--- a/pango/pango-item-private.h
+++ b/pango/pango-item-private.h
@@ -38,6 +38,24 @@ G_BEGIN_DECLS
#define PANGO_ANALYSIS_FLAG_HAS_CHAR_OFFSET (1 << 7)
+typedef struct _PangoAnalysisPrivate PangoAnalysisPrivate;
+
+struct _PangoAnalysisPrivate
+{
+ gpointer reserved;
+ PangoFont *size_font;
+ PangoFont *font;
+
+ guint8 level;
+ guint8 gravity;
+ guint8 flags;
+
+ guint8 script;
+ PangoLanguage *language;
+
+ GSList *extra_attrs;
+};
+
typedef struct _PangoItemPrivate PangoItemPrivate;
#if defined(__x86_64__) && !defined(__ILP32__)
@@ -74,6 +92,10 @@ void pango_analysis_collect_features (const PangoAnalysis
guint length,
guint *num_features);
+void pango_analysis_set_size_font (PangoAnalysis *analysis,
+ PangoFont *font);
+PangoFont * pango_analysis_get_size_font (const PangoAnalysis *analysis);
+
GList * pango_itemize_with_font (PangoContext *context,
PangoDirection base_dir,
const char *text,
diff --git a/pango/pango-item.c b/pango/pango-item.c
index 2b2664c5..d7291a08 100644
--- a/pango/pango-item.c
+++ b/pango/pango-item.c
@@ -324,3 +324,44 @@ pango_analysis_collect_features (const PangoAnalysis *analysis,
}
}
}
+
+/*< private >
+ * pango_analysis_set_size_font:
+ * @analysis: a `PangoAnalysis`
+ * @font: a `PangoFont`
+ *
+ * Sets the font to use for determining the line height.
+ *
+ * This is used when scaling fonts for emulated Small Caps,
+ * to preserve the original line height.
+ */
+void
+pango_analysis_set_size_font (PangoAnalysis *analysis,
+ PangoFont *font)
+{
+ PangoAnalysisPrivate *priv = (PangoAnalysisPrivate *)analysis;
+
+ if (priv->size_font)
+ g_object_unref (priv->size_font);
+ priv->size_font = font;
+ if (priv->size_font)
+ g_object_ref (priv->size_font);
+}
+
+/*< private >
+ * pango_analysis_get_size_font:
+ * @analysis: a `PangoAnalysis`
+ *
+ * Gets the font to use for determining line height.
+ *
+ * If this returns `NULL`, use analysis->font.
+ *
+ * Returns: (nullable) (transfer none): the font
+ */
+PangoFont *
+pango_analysis_get_size_font (const PangoAnalysis *analysis)
+{
+ PangoAnalysisPrivate *priv = (PangoAnalysisPrivate *)analysis;
+
+ return priv->size_font;
+}