DOKK / manpages / debian 12 / m17n-docs / m17nFont.3m17n.en
Font(3m17n) The m17n Library Font(3m17n)

Font - Font object.


typedef struct MFont MFont
Type of fonts.


MFont * mfont ()
Create a new font. MFont * mfont_parse_name (const char *name, MSymbol format)
Create a font by parsing a fontname. char * mfont_unparse_name (MFont *font, MSymbol format)
Create a fontname from a font. MFont * mfont_copy (MFont *font)
Make a copy of a font. void * mfont_get_prop (MFont *font, MSymbol key)
Get a property value of a font. int mfont_put_prop (MFont *font, MSymbol key, void *val)
Put a property value to a font. MSymbol * mfont_selection_priority ()
Return the font selection priority. int mfont_set_selection_priority (MSymbol *keys)
Set the font selection priority. MFont * mfont_find (MFrame *frame, MFont *spec, int *score, int max_size)
Find a font. int mfont_set_encoding (MFont *font, MSymbol encoding_name, MSymbol repertory_name)
Set encoding of a font. char * mfont_name (MFont *font)
Create a fontname from a font. MFont * mfont_from_name (const char *name)
Create a new font from fontname. int mfont_resize_ratio (MFont *font)
Get resize information of a font. MPlist * mfont_list (MFrame *frame, MFont *font, MSymbol language, int maxnum)
Get a list of fonts. MPlist * mfont_list_family_names (MFrame *frame)
Get a list of font famiy names. int mfont_check (MFrame *frame, MFontset *fontset, MSymbol script, MSymbol language, MFont *font)
Check the usability of a font. int mfont_match_p (MFont *font, MFont *spec)
Check is a font matches with a font spec. MFont * mfont_open (MFrame *frame, MFont *font)
Open a font. MFont * mfont_encapsulate (MFrame *frame, MSymbol data_type, void *data)
Encapusulate a font. int mfont_close (MFont *font)
Close a font.


MPlist * mfont_freetype_path
List of font files and directories that contain font files.


MSymbol Mfoundry
Key of font property specifying foundry. MSymbol Mfamily
Key of font property specifying family. MSymbol Mweight
Key of font property specifying weight. MSymbol Mstyle
Key of font property specifying style. MSymbol Mstretch
Key of font property specifying stretch. MSymbol Madstyle
Key of font property specifying additional style. MSymbol Mspacing
Key of font property specifying spacing. MSymbol Mregistry
Key of font property specifying registry. MSymbol Msize
Key of font property specifying size. MSymbol Motf
Key of font property specifying file name. MSymbol Mfontfile
Key of font property specifying file name. MSymbol Mresolution
Key of font property specifying resolution. MSymbol Mmax_advance
Key of font property specifying max advance width. MSymbol Mfontconfig
Symbol of name 'fontconfig'. MSymbol Mx
Symbol of name 'x'. MSymbol Mfreetype
Symbol of name 'freetype'. MSymbol Mxft
Symbol of name 'xft'.

Font object.

The m17n GUI API represents a font by an object of the type MFont. A font can have font properties. Like other types of properties, a font property consists of a key and a value. The key of a font property must be one of the following symbols:

Mfoundry, Mfamily, Mweight, Mstyle, Mstretch, Madstyle, Mregistry, Msize, Mresolution, Mspacing.

When the key of a font property is Msize or Mresolution, its value is an integer. Otherwise the value is a symbol.

The notation 'xxx property of F' means the font property that belongs to font F and whose key is Mxxx.

The value of a foundry property is a symbol representing font foundry information, e.g. adobe, misc, etc.

The value of a family property is a symbol representing font family information, e.g. times, helvetica, etc.

The value of a weight property is a symbol representing weight information, e.g. normal, bold, etc.

The value of a style property is a symbol representing slant information, e.g. normal, italic, etc.

The value of a stretch property is a symbol representing width information, e.g. normal, semicondensed, etc.

The value of an adstyle property is a symbol representing abstract font family information, e.g. serif, sans-serif, etc.

The value of a registry property is a symbol representing registry information, e.g. iso10646-1, iso8895-1, etc.

The value of a size property is an integer representing design size in the unit of 1/10 point.

The value of a resolution property is an integer representing assumed device resolution in the unit of dots per inch (dpi).

The value of a type property is a symbol indicating a font driver; currently Mx or Mfreetype.

The m17n library uses font objects for two purposes: to receive font specification from an application program, and to present available fonts to an application program. When the m17n library presents an available font to an application program, all font properties have a concrete value.

The m17n library supports three kinds of fonts: Window system fonts, FreeType fonts, and OpenType fonts.

Window system fonts

The m17n-X library supports all fonts handled by an X server and an X font server. The correspondence between XLFD fields and font properties are shown below.


XLFD field property
--------------- --------
FOUNDRY foundry
FAMILY_NAME family
WEIGHT_NAME weight
SLANT style
SETWIDTH_NAME stretch
ADD_STYLE_NAME adstyle
PIXEL_SIZE size
RESOLUTION_Y resolution
CHARSET_REGISTRY-CHARSET_ENCODING registry

XLFD fields not listed in the above table are ignored.

FreeType fonts

The m17n library, if configured to use the FreeType library, supports all fonts that can be handled by the FreeType library. The variable mfont_freetype_path is initialized properly according to the configuration of the m17n library and the environment variable M17NDIR. See the documentation of the variable for details.

If the m17n library is configured to use the fontconfig library, in addition to mfont_freetype_path, all fonts available via fontconfig are supported.

The family name of a FreeType font corresponds to the family property. Style names of FreeType fonts correspond to the weight, style, and stretch properties as below.


style name weight style stretch
---------- ------ ----- -------
Regular medium r normal
Italic medium i normal
Bold bold r normal
Bold Italic bold i normal
Narrow medium r condensed
Narrow Italic medium i condensed
Narrow Bold bold r condensed
Narrow Bold Italic bold i condensed
Black black r normal
Black Italic black i normal
Oblique medium o normal
BoldOblique bold o normal

Style names not listed in the above table are treated as 'Regular'.

Combination of a platform ID and an encoding ID corresponds to the registry property. For example, if a font has the combination (1 1), the registry property is 1-1. Some frequent combinations have a predefined registry property as below.


platform ID encoding ID registry property
----------- ----------- -----------------
0 3 unicode-bmp
0 4 unicode-full
1 0 apple-roman
3 1 unicode-bmp
3 1 unicode-full

Thus, a font that has two combinations (1 0) and (3 1) corresponds to four font objects whose registries are 1-0, apple-roman, 3-1, and unicode-bmp.

OpenType fonts

The m17n library, if configured to use both the FreeType library and the OTF library, supports any OpenType fonts. The list of actually available fonts is created in the same way as in the case of FreeType fonts. If a fontset instructs to use an OpenType font via an FLT (Font Layout Table), and the FLT has an OTF-related command (e.g. otf:deva), the OTF library converts a character sequence to a glyph code sequence according to the OpenType layout tables of the font, and the FreeType library gives a bitmap image for each glyph.

Type of fonts. The type MFont is the structure defining fonts. It contains information about the following properties of a font: foundry, family, weight, style, stretch, adstyle, registry, size, and resolution.

This structure is used both for specifying a font in a fontset and for storing information about available system fonts.

The internal structure is concealed from an application program.

SEE ALSO

mfont(), mfont_from_name(), mfont_find().

MSymbol Mfoundry

Key of font property specifying foundry. The variable Mfoundry is a symbol of name 'foundry' and is used as a key of font property and face property. The property value must be a symbol whose name is a foundry name of a font.

MSymbol Mfamily

Key of font property specifying family. The variable Mfamily is a symbol of name 'family' and is used as a key of font property and face property. The property value must be a symbol whose name is a family name of a font.

MSymbol Mweight

Key of font property specifying weight. The variable Mweight is a symbol of name 'weight' and is used as a key of font property and face property. The property value must be a symbol whose name is a weight name of a font (e.g 'medium', 'bold').

MSymbol Mstyle

Key of font property specifying style. The variable Mstyle is a symbol of name 'style' and is used as a key of font property and face property. The property value must be a symbol whose name is a style name of a font (e.g 'r', 'i', 'o').

MSymbol Mstretch

Key of font property specifying stretch. The variable Mstretch is a symbol of name 'stretch' and is used as a key of font property and face property. The property value must be a symbol whose name is a stretch name of a font (e.g 'normal', 'condensed').

MSymbol Madstyle

Key of font property specifying additional style. The variable Madstyle is a symbol of name 'adstyle' and is used as a key of font property and face property. The property value must be a symbol whose name is an additional style name of a font (e.g 'serif', '', 'sans').

MSymbol Mspacing

Key of font property specifying spacing. The variable Madstyle is a symbol of name 'spacing' and is used as a key of font property. The property value must be a symbol whose name specifies the spacing of a font (e.g 'p' for proportional, 'm' for monospaced).

MSymbol Mregistry

Key of font property specifying registry. The variable Mregistry is a symbol of name 'registry' and is used as a key of font property. The property value must be a symbol whose name is a registry name a font registry (e.g. 'iso8859-1', 'jisx0208.1983-0').

MSymbol Msize

Key of font property specifying size. The variable Msize is a symbol of name 'size' and is used as a key of font property and face property. The property value must be an integer specifying a font design size in the unit of 1/10 point (on 100 dpi display).

MSymbol Motf

Key of font property specifying file name. The variable Mfontfile is a symbol of name 'fontfile' and is used as a key of font property. The property value must be a symbol whose name is a font file name.

MSymbol Mfontfile

Key of font property specifying file name. The variable Mfontfile is a symbol of name 'fontfile' and is used as a key of font property. The property value must be a symbol whose name is a font file name.

MSymbol Mresolution

Key of font property specifying resolution. The variable Mresolution is a symbol of name 'resolution' and is used as a key of font property and face property. The property value must be an integer to specifying a font resolution in the unit of dots per inch (dpi).

MSymbol Mmax_advance

Key of font property specifying max advance width. The variable Mmax_advance is a symbol of name 'max-advance' and is used as a key of font property. The property value must be an integer specifying a font's max advance value by pixels.

MSymbol Mfontconfig

Symbol of name 'fontconfig'. The variable Mfontconfig is to be used as an argument of the functions mfont_parse_name() and mfont_unparse_name().

MSymbol Mx

Symbol of name 'x'. The variable Mx is to be used for a value of <type> member of the structure MDrawGlyph to specify the type of <fontp> member is actually (XFontStruct *).

MSymbol Mfreetype

Symbol of name 'freetype'. The variable Mfreetype is to be used for a value of <type> member of the structure MDrawGlyph to specify the type of <fontp> member is actually FT_Face.

MSymbol Mxft

Symbol of name 'xft'. The variable Mxft is to be used for a value of <type> member of the structure MDrawGlyph to specify the type of <fontp> member is actually (XftFont *).

MPlist* mfont_freetype_path

List of font files and directories that contain font files. The variable mfont_freetype_path is a plist of FreeType font files and directories that contain FreeType font files. Key of the element is Mstring, and the value is a string that represents a font file or a directory.

The macro M17N_INIT() sets up this variable to contain the sub-directory 'fonts' of the m17n database and the environment variable 'M17NDIR'. The first call of mframe() creates the internal list of the actually available fonts from this variable. Thus, an application program, if necessary, must modify the variable before calling mframe(). If it is going to add a new element, value must be a string that can be safely freed.

If the m17n library is not configured to use the FreeType library, this variable is not used.

Generated automatically by Doxygen for The m17n Library from the source code.

Copyright (C) 2001 Information-technology Promotion Agency (IPA)
Copyright (C) 2001-2011 National Institute of Advanced Industrial Science and Technology (AIST)
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License <http://www.gnu.org/licenses/fdl.html>.

12 Jan 2011 Version 1.6.2