summaryrefslogtreecommitdiff
path: root/pango2/pango-font-description.h
diff options
context:
space:
mode:
Diffstat (limited to 'pango2/pango-font-description.h')
-rw-r--r--pango2/pango-font-description.h324
1 files changed, 324 insertions, 0 deletions
diff --git a/pango2/pango-font-description.h b/pango2/pango-font-description.h
new file mode 100644
index 00000000..160ee50d
--- /dev/null
+++ b/pango2/pango-font-description.h
@@ -0,0 +1,324 @@
+/*
+ * Copyright (C) 2000 Red Hat Software
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <pango2/pango-types.h>
+
+#include <glib-object.h>
+#include <hb.h>
+
+G_BEGIN_DECLS
+
+/**
+ * Pango2FontDescription:
+ *
+ * A `Pango2FontDescription` describes a font in an implementation-independent
+ * manner.
+ *
+ * `Pango2FontDescription` structures are used both to list what fonts are
+ * available on the system and also for specifying the characteristics of
+ * a font to load.
+ */
+
+/**
+ * Pango2Style:
+ * @PANGO2_STYLE_NORMAL: the font is upright.
+ * @PANGO2_STYLE_OBLIQUE: the font is slanted, but in a roman style.
+ * @PANGO2_STYLE_ITALIC: the font is slanted in an italic style.
+ *
+ * An enumeration specifying the various slant styles possible for a font.
+ **/
+typedef enum {
+ PANGO2_STYLE_NORMAL,
+ PANGO2_STYLE_OBLIQUE,
+ PANGO2_STYLE_ITALIC
+} Pango2Style;
+
+/**
+ * Pango2Variant:
+ * @PANGO2_VARIANT_NORMAL: A normal font.
+ * @PANGO2_VARIANT_SMALL_CAPS: A font with the lower case characters
+ * replaced by smaller variants of the capital characters.
+ * @PANGO2_VARIANT_ALL_SMALL_CAPS: A font with all characters
+ * replaced by smaller variants of the capital characters.
+ * @PANGO2_VARIANT_PETITE_CAPS: A font with the lower case characters
+ * replaced by smaller variants of the capital characters.
+ * Petite Caps can be even smaller than Small Caps.
+ * @PANGO2_VARIANT_ALL_PETITE_CAPS: A font with all characters
+ * replaced by smaller variants of the capital characters.
+ * Petite Caps can be even smaller than Small Caps.
+ * @PANGO2_VARIANT_UNICASE: A font with the upper case characters
+ * replaced by smaller variants of the capital letters.
+ * @PANGO2_VARIANT_TITLE_CAPS: A font with capital letters that
+ * are more suitable for all-uppercase titles.
+ *
+ * An enumeration specifying capitalization variant of the font.
+ */
+typedef enum {
+ PANGO2_VARIANT_NORMAL,
+ PANGO2_VARIANT_SMALL_CAPS,
+ PANGO2_VARIANT_ALL_SMALL_CAPS,
+ PANGO2_VARIANT_PETITE_CAPS,
+ PANGO2_VARIANT_ALL_PETITE_CAPS,
+ PANGO2_VARIANT_UNICASE,
+ PANGO2_VARIANT_TITLE_CAPS
+} Pango2Variant;
+
+/**
+ * Pango2Weight:
+ * @PANGO2_WEIGHT_THIN: the thin weight (= 100)
+ * @PANGO2_WEIGHT_ULTRALIGHT: the ultralight weight (= 200)
+ * @PANGO2_WEIGHT_LIGHT: the light weight (= 300)
+ * @PANGO2_WEIGHT_SEMILIGHT: the semilight weight (= 350)
+ * @PANGO2_WEIGHT_BOOK: the book weight (= 380)
+ * @PANGO2_WEIGHT_NORMAL: the default weight (= 400)
+ * @PANGO2_WEIGHT_MEDIUM: the normal weight (= 500)
+ * @PANGO2_WEIGHT_SEMIBOLD: the semibold weight (= 600)
+ * @PANGO2_WEIGHT_BOLD: the bold weight (= 700)
+ * @PANGO2_WEIGHT_ULTRABOLD: the ultrabold weight (= 800)
+ * @PANGO2_WEIGHT_HEAVY: the heavy weight (= 900)
+ * @PANGO2_WEIGHT_ULTRAHEAVY: the ultraheavy weight (= 1000)
+ *
+ * A `Pango2Weight` specifes the weight (boldness) of a font.
+ *
+ * Weight is specified as a numeric value ranging from 100 to 1000.
+ * This enumeration simply provides some common, predefined values.
+ */
+typedef enum {
+ PANGO2_WEIGHT_THIN = 100,
+ PANGO2_WEIGHT_ULTRALIGHT = 200,
+ PANGO2_WEIGHT_LIGHT = 300,
+ PANGO2_WEIGHT_SEMILIGHT = 350,
+ PANGO2_WEIGHT_BOOK = 380,
+ PANGO2_WEIGHT_NORMAL = 400,
+ PANGO2_WEIGHT_MEDIUM = 500,
+ PANGO2_WEIGHT_SEMIBOLD = 600,
+ PANGO2_WEIGHT_BOLD = 700,
+ PANGO2_WEIGHT_ULTRABOLD = 800,
+ PANGO2_WEIGHT_HEAVY = 900,
+ PANGO2_WEIGHT_ULTRAHEAVY = 1000
+} Pango2Weight;
+
+/**
+ * Pango2Stretch:
+ * @PANGO2_STRETCH_ULTRA_CONDENSED: ultra-condensed width (= 500)
+ * @PANGO2_STRETCH_EXTRA_CONDENSED: extra-condensed width (= 625)
+ * @PANGO2_STRETCH_CONDENSED: condensed width (= 750)
+ * @PANGO2_STRETCH_SEMI_CONDENSED: semi-condensed width (= 875)
+ * @PANGO2_STRETCH_NORMAL: the normal width (= 1000)
+ * @PANGO2_STRETCH_SEMI_EXPANDED: semi-expanded width (= 1125)
+ * @PANGO2_STRETCH_EXPANDED: expanded width (= 1250)
+ * @PANGO2_STRETCH_EXTRA_EXPANDED: extra-expanded width (= 1500)
+ * @PANGO2_STRETCH_ULTRA_EXPANDED: ultra-expanded width (= 2000)
+ *
+ * A `Pango2Stretch` specifes the width of the font relative
+ * to other designs within a family.
+ *
+ * Stretch is specified as a numeric value ranging from 500 to 2000.
+ * This enumeration simply provides some common, predefined values.
+ */
+typedef enum {
+ PANGO2_STRETCH_ULTRA_CONDENSED = 500,
+ PANGO2_STRETCH_EXTRA_CONDENSED = 625,
+ PANGO2_STRETCH_CONDENSED = 750,
+ PANGO2_STRETCH_SEMI_CONDENSED = 875,
+ PANGO2_STRETCH_NORMAL = 1000,
+ PANGO2_STRETCH_SEMI_EXPANDED = 1125,
+ PANGO2_STRETCH_EXPANDED = 1250,
+ PANGO2_STRETCH_EXTRA_EXPANDED = 1500,
+ PANGO2_STRETCH_ULTRA_EXPANDED = 2000
+} Pango2Stretch;
+
+/**
+ * Pango2FontMask:
+ * @PANGO2_FONT_MASK_FAMILY: the font family is specified.
+ * @PANGO2_FONT_MASK_STYLE: the font style is specified.
+ * @PANGO2_FONT_MASK_VARIANT: the font variant is specified.
+ * @PANGO2_FONT_MASK_WEIGHT: the font weight is specified.
+ * @PANGO2_FONT_MASK_STRETCH: the font stretch is specified.
+ * @PANGO2_FONT_MASK_SIZE: the font size is specified.
+ * @PANGO2_FONT_MASK_GRAVITY: the font gravity is specified
+ * @PANGO2_FONT_MASK_VARIATIONS: OpenType font variations are specified
+ * @PANGO2_FONT_MASK_FACEID: the face ID is specified
+ *
+ * The bits in a `Pango2FontMask` correspond to the set fields in a
+ * `Pango2FontDescription`.
+ */
+typedef enum {
+ PANGO2_FONT_MASK_FAMILY = 1 << 0,
+ PANGO2_FONT_MASK_STYLE = 1 << 1,
+ PANGO2_FONT_MASK_VARIANT = 1 << 2,
+ PANGO2_FONT_MASK_WEIGHT = 1 << 3,
+ PANGO2_FONT_MASK_STRETCH = 1 << 4,
+ PANGO2_FONT_MASK_SIZE = 1 << 5,
+ PANGO2_FONT_MASK_GRAVITY = 1 << 6,
+ PANGO2_FONT_MASK_VARIATIONS = 1 << 7,
+ PANGO2_FONT_MASK_FACEID = 1 << 8,
+} Pango2FontMask;
+
+/* CSS scale factors (1.2 factor between each size) */
+/**
+ * PANGO2_SCALE_XX_SMALL:
+ *
+ * The scale factor for three shrinking steps (1 / (1.2 * 1.2 * 1.2)).
+ */
+/**
+ * PANGO2_SCALE_X_SMALL:
+ *
+ * The scale factor for two shrinking steps (1 / (1.2 * 1.2)).
+ */
+/**
+ * PANGO2_SCALE_SMALL:
+ *
+ * The scale factor for one shrinking step (1 / 1.2).
+ */
+/**
+ * PANGO2_SCALE_MEDIUM:
+ *
+ * The scale factor for normal size (1.0).
+ */
+/**
+ * PANGO2_SCALE_LARGE:
+ *
+ * The scale factor for one magnification step (1.2).
+ */
+/**
+ * PANGO2_SCALE_X_LARGE:
+ *
+ * The scale factor for two magnification steps (1.2 * 1.2).
+ */
+/**
+ * PANGO2_SCALE_XX_LARGE:
+ *
+ * The scale factor for three magnification steps (1.2 * 1.2 * 1.2).
+ */
+#define PANGO2_SCALE_XX_SMALL ((double)0.5787037037037)
+#define PANGO2_SCALE_X_SMALL ((double)0.6944444444444)
+#define PANGO2_SCALE_SMALL ((double)0.8333333333333)
+#define PANGO2_SCALE_MEDIUM ((double)1.0)
+#define PANGO2_SCALE_LARGE ((double)1.2)
+#define PANGO2_SCALE_X_LARGE ((double)1.44)
+#define PANGO2_SCALE_XX_LARGE ((double)1.728)
+
+
+#define PANGO2_TYPE_FONT_DESCRIPTION (pango2_font_description_get_type ())
+
+PANGO2_AVAILABLE_IN_ALL
+GType pango2_font_description_get_type (void) G_GNUC_CONST;
+PANGO2_AVAILABLE_IN_ALL
+Pango2FontDescription * pango2_font_description_new (void);
+PANGO2_AVAILABLE_IN_ALL
+Pango2FontDescription * pango2_font_description_copy (const Pango2FontDescription *desc);
+PANGO2_AVAILABLE_IN_ALL
+Pango2FontDescription * pango2_font_description_copy_static (const Pango2FontDescription *desc);
+PANGO2_AVAILABLE_IN_ALL
+guint pango2_font_description_hash (const Pango2FontDescription *desc) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+gboolean pango2_font_description_equal (const Pango2FontDescription *desc1,
+ const Pango2FontDescription *desc2) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_free (Pango2FontDescription *desc);
+
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_family (Pango2FontDescription *desc,
+ const char *family);
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_family_static (Pango2FontDescription *desc,
+ const char *family);
+PANGO2_AVAILABLE_IN_ALL
+const char * pango2_font_description_get_family (const Pango2FontDescription *desc) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_style (Pango2FontDescription *desc,
+ Pango2Style style);
+PANGO2_AVAILABLE_IN_ALL
+Pango2Style pango2_font_description_get_style (const Pango2FontDescription *desc) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_variant (Pango2FontDescription *desc,
+ Pango2Variant variant);
+PANGO2_AVAILABLE_IN_ALL
+Pango2Variant pango2_font_description_get_variant (const Pango2FontDescription *desc) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_weight (Pango2FontDescription *desc,
+ Pango2Weight weight);
+PANGO2_AVAILABLE_IN_ALL
+Pango2Weight pango2_font_description_get_weight (const Pango2FontDescription *desc) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_stretch (Pango2FontDescription *desc,
+ Pango2Stretch stretch);
+PANGO2_AVAILABLE_IN_ALL
+Pango2Stretch pango2_font_description_get_stretch (const Pango2FontDescription *desc) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_size (Pango2FontDescription *desc,
+ int size);
+PANGO2_AVAILABLE_IN_ALL
+int pango2_font_description_get_size (const Pango2FontDescription *desc) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_absolute_size (Pango2FontDescription *desc,
+ double size);
+PANGO2_AVAILABLE_IN_ALL
+gboolean pango2_font_description_get_size_is_absolute (const Pango2FontDescription *desc) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_gravity (Pango2FontDescription *desc,
+ Pango2Gravity gravity);
+PANGO2_AVAILABLE_IN_ALL
+Pango2Gravity pango2_font_description_get_gravity (const Pango2FontDescription *desc) G_GNUC_PURE;
+
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_variations_static (Pango2FontDescription *desc,
+ const char *variations);
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_variations (Pango2FontDescription *desc,
+ const char *variations);
+PANGO2_AVAILABLE_IN_ALL
+const char * pango2_font_description_get_variations (const Pango2FontDescription *desc) G_GNUC_PURE;
+
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_faceid (Pango2FontDescription *desc,
+ const char *faceid);
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_set_faceid_static (Pango2FontDescription *desc,
+ const char *faceid);
+PANGO2_AVAILABLE_IN_ALL
+const char * pango2_font_description_get_faceid (const Pango2FontDescription *desc) G_GNUC_PURE;
+
+PANGO2_AVAILABLE_IN_ALL
+Pango2FontMask pango2_font_description_get_set_fields (const Pango2FontDescription *desc) G_GNUC_PURE;
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_unset_fields (Pango2FontDescription *desc,
+ Pango2FontMask to_unset);
+
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_merge (Pango2FontDescription *desc,
+ const Pango2FontDescription *desc_to_merge,
+ gboolean replace_existing);
+PANGO2_AVAILABLE_IN_ALL
+void pango2_font_description_merge_static (Pango2FontDescription *desc,
+ const Pango2FontDescription *desc_to_merge,
+ gboolean replace_existing);
+
+PANGO2_AVAILABLE_IN_ALL
+Pango2FontDescription * pango2_font_description_from_string (const char *str);
+PANGO2_AVAILABLE_IN_ALL
+char * pango2_font_description_to_string (const Pango2FontDescription *desc);
+
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(Pango2FontDescription, pango2_font_description_free)
+
+G_END_DECLS