diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-12-19 10:39:37 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-12-19 10:40:34 -0500 |
commit | 6770050e74cf83830e255f1d1e9b574feb5a60fc (patch) | |
tree | 3aca4500a31b6cde94e44e2f3b3ac9a2a1d410a8 | |
parent | c0c70393f798be29e3835fa0abd04b15a6235562 (diff) | |
download | pango-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.h | 22 | ||||
-rw-r--r-- | pango/pango-item.c | 41 |
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; +} |