summaryrefslogtreecommitdiff
path: root/pango/fonts.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/fonts.c')
-rw-r--r--pango/fonts.c80
1 files changed, 74 insertions, 6 deletions
diff --git a/pango/fonts.c b/pango/fonts.c
index e502d2b3..3afc8f27 100644
--- a/pango/fonts.c
+++ b/pango/fonts.c
@@ -2520,18 +2520,24 @@ pango_font_family_get_face (PangoFontFamily *family,
* A monospace font is a font designed for text display where the the
* characters form a regular grid.
*
- * For Western languages this would
- * mean that the advance width of all characters are the same, but
- * this categorization also includes Asian fonts which include
- * double-width characters: characters that occupy two grid cells.
- * g_unichar_iswide() returns a result that indicates whether a
- * character is typically double-width in a monospace font.
+ * For Western languages this would mean that the advance width of all
+ * characters are the same, but this categorization also includes Asian
+ * fonts which include double-width characters: characters that occupy
+ * two grid cells. [function@GLib.unichar_iswide] returns a result that
+ * indicates whether a character is typically double-width in a monospace
+ * font.
*
* The best way to find out the grid-cell size is to call
* [method@Pango.FontMetrics.get_approximate_digit_width], since the
* results of [method@Pango.FontMetrics.get_approximate_char_width] may
* be affected by double-width characters.
*
+ * Note that a font family can in principle contain a mixture of
+ * monospace and non-monospace faces (although well-behaved families
+ * won't). Use [method@Pango.FontFace.is_monospace] to examine individual
+ * faces. This function will return `TRUE` as long as the family contains
+ * any monospace faces.
+ *
* Return value: %TRUE if the family is monospace.
*
* Since: 1.4
@@ -2554,6 +2560,12 @@ pango_font_family_is_monospace (PangoFontFamily *family)
* Such axes are also known as _variations_; see
* [method@Pango.FontDescription.set_variations] for more information.
*
+ * Note that a font family can in principle contain a mixture of
+ * variable and non-variable faces, and even variable and non-variable
+ * versions of the same face. Use [method@Pango.FontFace.is_variable]
+ * to examine individual faces. This function will return `TRUE` as
+ * long as the family contains any variable faces.
+ *
* Return value: %TRUE if the family is variable
*
* Since: 1.44
@@ -2572,9 +2584,23 @@ pango_font_family_is_variable (PangoFontFamily *family)
G_DEFINE_ABSTRACT_TYPE (PangoFontFace, pango_font_face, G_TYPE_OBJECT)
+static gboolean
+pango_font_face_default_is_monospace (PangoFontFace *face)
+{
+ return pango_font_family_is_monospace (pango_font_face_get_family (face));
+}
+
+static gboolean
+pango_font_face_default_is_variable (PangoFontFace *face)
+{
+ return pango_font_family_is_variable (pango_font_face_get_family (face));
+}
+
static void
pango_font_face_class_init (PangoFontFaceClass *class G_GNUC_UNUSED)
{
+ class->is_monospace = pango_font_face_default_is_monospace;
+ class->is_variable = pango_font_face_default_is_variable;
}
static void
@@ -2707,6 +2733,48 @@ pango_font_face_get_family (PangoFontFace *face)
}
/**
+ * pango_font_face_is_monospace:
+ * @face: a `PangoFontFace`
+ *
+ * A monospace font is a font designed for text display where the the
+ * characters form a regular grid.
+ *
+ * See [method@Pango.FontFamily.is_monospace] for more details.
+ *
+ * Returns: `TRUE` if @face is monospace
+ *
+ * Since: 1.52
+ */
+gboolean
+pango_font_face_is_monospace (PangoFontFace *face)
+{
+ g_return_val_if_fail (PANGO_IS_FONT_FACE (face), FALSE);
+
+ return PANGO_FONT_FACE_GET_CLASS (face)->is_monospace (face);
+}
+
+/**
+ * pango_font_face_is_variable:
+ * @face: a `PangoFontFace`
+ *
+ * A variable font is a font which has axes that can be modified
+ * to produce variations.
+ *
+ * See [method@Pango.FontFamily.is_variable] for more details.
+ *
+ * Returns: `TRUE` if @face is variable
+ *
+ * Since: 1.52
+ */
+gboolean
+pango_font_face_is_variable (PangoFontFace *face)
+{
+ g_return_val_if_fail (PANGO_IS_FONT_FACE (face), FALSE);
+
+ return PANGO_FONT_FACE_GET_CLASS (face)->is_variable (face);
+}
+
+/**
* pango_font_has_char:
* @font: a `PangoFont`
* @wc: a Unicode character