---
name: "m17nFLT"
section: "3m17n"
platform: "linux"
package: "m17n-docs"
version: "1.8.4-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/m17nFLT"
---

# m17nFLT(3m17n)

\- API provided by libm17n-flt.so

## NAME

m17nFLT\_-\_FLT -  - API provided by libm17n-flt.so \

## SYNOPSIS

### Data Structures

struct **MFLTGlyph**\
 Type of information about a glyph.  struct **MFLTGlyphAdjustment**\
 Type of information about a glyph position adjustment.  struct **MFLTGlyphString**\
 Type of information about a glyph sequence.  struct **MFLTOtfSpec**\
 Type of specification of GSUB and GPOS OpenType tables.  struct **MFLTFont**\
 Type of font to be used by the FLT driver.

### Typedefs

typedef struct \_MFLT **MFLT**\
 Type of FLT (Font Layout Table).

### Functions

**MFLT** \* **mflt\_get** (MSymbol name)\
 Return an FLT object that has a specified name.  **MFLT** \* **mflt\_find** (int c, **MFLTFont** \*font)\
 Find an FLT suitable for the specified character and font.  const char \* **mflt\_name** (**MFLT** \*flt)\
 Return the name of an FLT.  **MCharTable** \* **mflt\_coverage** (**MFLT** \*flt)\
 Return a coverage of a FLT.  int **mflt\_run** (**MFLTGlyphString** \*gstring, int from, int to, **MFLTFont** \*font, **MFLT** \*flt)\
 Layout characters with an FLT.  **MFLT** \* **mdebug\_dump\_flt** (**MFLT** \*flt, int indent)\
 Dump a Font Layout Table.  void **mflt\_dump\_gstring** (**MFLTGlyphString** \*gstring)\
 Dump an **MFLTGlyphString**.

### Variables

int **mflt\_enable\_new\_feature**\
 Flag to control several new OTF handling commands.  int(\* **mflt\_iterate\_otf\_feature** )(struct \_MFLTFont \*font, **MFLTOtfSpec** \*spec, int from, int to, unsigned char \*table)\
 MSymbol(\* **mflt\_font\_id** )(struct \_MFLTFont \*font)\
 int(\* **mflt\_try\_otf** )(struct \_MFLTFont \*font, **MFLTOtfSpec** \*spec, **MFLTGlyphString** \*gstring, int from, int to)\

## Detailed Description

API provided by libm17n-flt.so \

FLT support for a window system.

This section defines the m17n FLT API concerning character layouting facility using FLT (Font Layout Table). The format of FLT is described in **mdbFLT**. \

## Data Structure Documentation

### MFLTGlyph

Type of information about a glyph.

**FIELD DOCUMENTATION:**

**int MFLTGlyph::c** Character code (Unicode) of the glyph.

**unsigned int MFLTGlyph::code** Glyph ID of the glyph in the font.

**int MFLTGlyph::from** Starting index of the run in **MFLTGlyphString** that is replaced by this glyph. \

**int MFLTGlyph::to** Ending index of the run in **MFLTGlyphString** that is replaced by this glyph. \

**int MFLTGlyph::xadv** Advance width for horizontal layout expressed in 26.6 fractional pixel format. \

**int MFLTGlyph::yadv** Advance height for vertical layout expressed in 26.6 fractional pixel format. \

**int MFLTGlyph::ascent** Ink metrics of the glyph expressed in 26.6 fractional pixel format. \

**int MFLTGlyph::descent**

**int MFLTGlyph::lbearing**

**int MFLTGlyph::rbearing**

**int MFLTGlyph::xoff** Horizontal and vertical adjustments for the glyph positioning expressed in 26.6 fractional pixel format. \

**int MFLTGlyph::yoff**

**unsigned MFLTGlyph::encoded** Flag to tell whether the member \<code\> has already been set to a glyph ID in the font. \

**unsigned MFLTGlyph::measured** Flag to tell if the metrics of the glyph (members \<xadv\> thru \<rbearing\>) are already calculated. \

**unsigned MFLTGlyph::adjusted** Flag to tell if the metrics of the glyph is adjusted, i.e. \<xadv\> or \<yadv\> is different from the normal size, or \<xoff\> or \<yoff\> is nonzero. \

**unsigned MFLTGlyph::internal** For m17n-lib's internal use only.

### MFLTGlyphAdjustment

Type of information about a glyph position adjustment.

**FIELD DOCUMENTATION:**

**int MFLTGlyphAdjustment::xadv** Adjustments for advance width for horizontal layout and advance height for vertical layout expressed in 26.6 fractional pixel format. \

**int MFLTGlyphAdjustment::yadv**

**int MFLTGlyphAdjustment::xoff** Horizontal and vertical adjustments for glyph positioning expressed in 26.6 fractional pixel format. \

**int MFLTGlyphAdjustment::yoff**

**short MFLTGlyphAdjustment::back** Number of glyphs to go back for drawing a glyph.

**unsigned MFLTGlyphAdjustment::advance\_is\_absolute** If nonzero, the member \<xadv\> and \<yadv\> are absolute, i.e., they should not be added to a glyph's origianl advance width and height. \

**unsigned MFLTGlyphAdjustment::set** Should be set to 1 if at least one of the other members has a nonzero value. \

### MFLTGlyphString

Type of information about a glyph sequence.

**FIELD DOCUMENTATION:**

**int MFLTGlyphString::glyph\_size** The actual byte size of elements of the array pointed by the member **glyphs**. It must be equal to or greater than 'sizeof (MFLTGlyph)'. \

**MFLTGlyph\* MFLTGlyphString::glyphs** **Array of glyphs.**

**int MFLTGlyphString::allocated** **Number of elements allocated in glyphs.**

**int MFLTGlyphString::used** **Number of elements in glyphs in use.**

**unsigned int MFLTGlyphString::r2l** **Flag to tell if the glyphs should be drawn from right-to-left or not.** \

### MFLTOtfSpec

**Type of specification of GSUB and GPOS OpenType tables.**

**FIELD DOCUMENTATION:**

**MSymbol MFLTOtfSpec::sym** **Unique symbol representing the spec. This is the same as the OTF-SPEC of the FLT.** \

**unsigned int MFLTOtfSpec::script** **Tags for script and language system.**

**unsigned int MFLTOtfSpec::langsys**

**unsigned int\* MFLTOtfSpec::features\[2\]** **Array of GSUB (1st element) and GPOS (2nd element) feature tag arrays. Each array is terminated by 0. It may be NULL if there is no feature to specify.**

**(1) The case of using this information for selecting which features to apply to a glyph string. If the array is NULL, apply no feature. If the first element is 0xFFFFFFFF, apply all available features except for what appear in the second and following elements (if any). Otherwise, apply all listed features.**

**(2) The case of using this information for checking if a a font can be drived by a specific FLT. If the array is NULL, the font should not have any features. Otherwize, the font should have all features before 0xFFFFFFFF element (if any) and should not have any features after that element.** \

### MFLTFont

**Type of font to be used by the FLT driver.**

**FIELD DOCUMENTATION:**

**MSymbol MFLTFont::family** **Family name of the font. It may be Mnil if the family name is not important in finding a Font Layout Table suitable for the font (for instance, in the case that the font is an OpenType font).** \

**int MFLTFont::x\_ppem** **Horizontal font sizes in pixels per EM.**

**int MFLTFont::y\_ppem** **Vertical font sizes in pixels per EM.**

**int(\* MFLTFont::get\_glyph\_id) (struct \_MFLTFont \*font, MFLTGlyphString \*gstring, int from, int to)** **Callback function to get glyph IDs for glyphs between FROM (inclusive) and TO (exclusive) of GSTRING. If the member \<encoded\> of a glyph is zero, the member \<code\> of that glyph is a character code. The function must convert it to the glyph ID of FONT.** \

**int(\* MFLTFont::get\_metrics) (struct \_MFLTFont \*font, MFLTGlyphString \*gstring, int from, int to)** **Callback function to get metrics of glyphs between FROM (inclusive) and TO (exclusive) of GSTRING. If the member \<measured\> of a glyph is zero, the function must set the members \<xadv\>, \<yadv\>, \<ascent\>, \<descent\>, \<lbearing\>, and \<rbearing\> of the glyph.** \

**int(\* MFLTFont::check\_otf) (struct \_MFLTFont \*font, MFLTOtfSpec \*spec)** **Callback function to check if the font has OpenType GSUB/GPOS features for a specific script/language. The function must return 1, if the font satisfies SPEC, or 0. It must be NULL if the font does not have OpenType tables.** \

**int(\* MFLTFont::drive\_otf) (struct \_MFLTFont \*font, MFLTOtfSpec \*spec, MFLTGlyphString \*in, int from, int to, MFLTGlyphString \*out, MFLTGlyphAdjustment \*adjustment)** **Callback function to apply OpenType features in SPEC to glyphs between FROM (inclusive) and TO (exclusive) of IN. The resulting glyphs are appended to the tail of OUT. If OUT does not have a room to store all the resulting glyphs, it must return -2. It must be NULL if the font does not have OpenType tables.** \

**void\* MFLTFont::internal** **For m17n-lib's internal use only. It should be initialized to NULL.** \

## Typedef Documentation

### typedef struct \_MFLT MFLT

**Type of FLT (Font Layout Table). The type MFLT is for an FLT object. Its internal structure is concealed from application programs.** \

## Variable Documentation

### int mflt\_enable\_new\_feature

**Flag to control several new OTF handling commands. If the variable mflt\_enable\_new\_feature is nonzero, the function mflt\_run() can drive a Font Layout Table that contains the new OTF-related commands ':otf?' and/or OTF feature specification in a category table.** \

### int(\* mflt\_iterate\_otf\_feature) (struct \_MFLTFont \*font, MFLTOtfSpec \*spec, int from, int to, unsigned char \*table) (struct \_MFLTFont \* font, MFLTOtfSpec \* spec, int from, int to, unsigned char \* table)

### MSymbol(\* mflt\_font\_id) (struct \_MFLTFont \*font) (struct \_MFLTFont \* font)

### int(\* mflt\_try\_otf) (struct \_MFLTFont \*font, MFLTOtfSpec \*spec, MFLTGlyphString \*gstring, int from, int to) (struct \_MFLTFont \* font, MFLTOtfSpec \* spec, MFLTGlyphString \* gstring, int from, int to)

## Author

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

## COPYRIGHT

**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\>.**
