


Proceedings of Engineering and Technology Innovation, vol. 9, 2018, pp. 44 - 48 

 

MF Integrator: A Module for Converting METAFONT into Outline Font 

Ammar Ul Hassan
1
, Jaeyoung Choi

1,*
, Geunho Jeong

2
 

1
School of Computer Science and Engineering, Soongsil University, Korea. 

2
Gensol Soft, 99 Jangseungbaegi-Ro, Dongjak-Gu, Seoul 06936, Korea. 

Received 12 March 2018; received in revised form 17 May 2018; accepted 25 May 2018 
 

Abstract 

METAFONT is a description language that generates TeX-oriented bitmap fonts which are not popular outside 

the TeX world. The number of fonts prepared with METAFONT are very small compared with outline fonts. Font 

libraries like FreeType, which are used to render fonts in outline and some bitmap formats doesn’t provide any 

support for METAFONT. A research, MFCONFIG module added an indirect support of METAFONT inside 

FreeType rasterizer but it has problems of performance and dependency. In this paper, we have proposed a module 

named MF Integrator for FreeType rasterizer. The proposed module overcome the problems of performance and 

dependency of MFCONFIG module. Authors tested proposed module with a client application which is used to 

display styled text on screen. Users can now take the benefits of METAFONT by using our proposed MF Integrator 

module. 

 

Keywords: metafont, freetype, fontconfig, font processing 

 

1. Introduction 

Fonts are the graphical representation of text in a specific style and size. These fonts are mainly categorized in two types; 

outline fonts and bitmap fonts. For creating a new font style for outline font, font designers have to design a new file every time. 

METAFONT is a programming language introduced by D. E. Knuth [1], which allows users to generate different font styles 

easily. METAFONT files are different from outline font files. METAFONT file consists of functions for drawing characters 

and has parameters for different font styles. By changing the parameter values, various font styles can easily be generated. 

However, users are unable to use METAFONT on their PCs because the current font system doesn’t provide any direct 

use of METAFONT and TeX bitmap fonts such as GF and PK fonts [2]. As it was developed in 1980’s, the PC was not fast 

enough to provide a real-time conversion of METAFONT fonts into its corresponding outline fonts. To use METAFONT in 

font engines like FreeType [3], users need to convert METAFONT into its corresponding outline font.   

MFCONFIG [4] is a plug-in module of FONTCONFIG [5] which provides users a way of using METAFONT inside 

current font system. This plugin-in module of FONTCONFIG provides font information to FreeType engine. It allows users to 

render METAFONT styled characters on screen. Users can easily change parameter values and display various styled text 

using MFCONFIG module. Even though by using MFCONFIG module variety of font styles can be generated from 

METAFONT, it has its own problems. The main problems of MFCONFIG module include performance and dependability. As 

it is plugged into the high-level of font system and not directly plugged in FreeType engine, it makes its performance poor. It is 

also dependent on FONTCONFIG library, therefore if there is no FONTCONFIG in font environment this module cannot 

work . 

                                                           
*
 
Corresponding author. E-mail address: choi@ssu.ac.kr 

 



Proceedings of Engineering and Technology Innovation, vol. 9, 2018, pp. 44 - 48 

Copyright ©  TAETI 

45 

In this paper, MF Integrator module is proposed which directly converts METAFONT into its corresponding outline font 

FreeType engine. This module is implemented directly inside FreeType so it has no dependency on other high-level font 

libraries like FONTCONFIG and Xft [7]. This module has overcome the problems of MFCONFIG module. By using MF 

Integrator module, the conversion of METAFONT into its corresponding outline font is unnecessary. The MF Integrator 

module has a better performance and no dependability issues as compared with MFCONFIG module. 

2. MFCONFIG Module and Issues 

MFCONFIG is a plug-in module for FONTCONFIG. It enables the use of METAFONT format on Linux font system. It 

mainly consists of three sub-layers; Communication layer, Management layer, and Conversion layer. Communication layer is 

the starting point of MFCONFIG. It provides a medium for interaction between MFCONFIG and FONTCONFIG. 

Management layer is responsible for tasks like searching and other operations. And Conversation layer is responsible for 

converting METAFONT file into its corresponding outline font file. Fig. 1 shows the architecture of MFCONFIG module 

linked with FONTCONFIG. 

 
Fig. 1 MFCONFIG architecture linked with FONTCONFIG 

Although MFCONFIG supports METAFONT in Linux font system, it still has its own problems. These problems are 

mainly related to performance and dependability. As MFCONFIG is plugged in the high-level of font system i.e. 

FONTCONFIG and not directly plugged inside FreeType, it makes its performance very slow compared to the font-specific 

driver modules supported by FreeType. Whenever a client application inputs a METAFONT file for rendering styled text, 

FONTCONFIG communicates with MFCONFIG, performs operations, and then sends input to FreeType for rendering text. 

This whole process becomes slow because of the high-level operations before FreeType receives its input.  

Other than the performance problem, MFCONFIG also has a dependability problem. As it is dependent on 

FONTCONFIG library, this means that if there is a font environment where there is no FONTCONFIG, then this module 

cannot be used. FONTCONFIG is mainly used in Linux font system for locating fonts and no other operating systems so, 

MFCONFIG cannot be supported in them.  

The proposed MF Integrator module has tried to resolve these two problems of MFCONFIG. It can be used for processing 

METAFONT files directly inside FreeType as like any other driver modules like TrueType driver module, Type1 driver 

module etc.  

3. MF Integrator Module 

MF Integrator module mainly consists of 3 sub-modules; Linker module, Administrator module, and Transformation 

module as shown in Fig. 2. Linker module is the initial point of MF Integrator module. Any METAFONT file request to 



Proceedings of Engineering and Technology Innovation, vol. 9, 2018, pp. 44 - 48 

 

Copyright ©  TAETI 

46 

FreeType library is dealt by this module. Linker module is mainly liable for linking METAFONT request to MF Integrator 

module. The module provides a two-way linking, i.e. it links the METAFONT file request to MF Integrator module and returns 

its respective outline font file. Administrator module handles all the administrative related tasks like searching if the requested 

METAFONT is installed or not. Storing the newly created outline font information in a list. This list indicates whether a font 

file is already prepared or not. Managing tasks like verifying the list if the outline font file for the requested METAFONT file 

exists, sending METAFONT file to Transformation module for converting it into outline font file, returning the newly prepared 

outline font file from Transformation module to Linker module. 

 
Fig. 2 MF Integrator Module Architecture 

The work of MF Integrator module is perfectly compatible with any FreeType version. This module can work as driver 

module for managing METAFONT font which is not supported in FreeType by default. Whenever a different METAFONT 

style is input, MF Integrator module can easily display the resulting fonts on screen. As it is directly implemented inside 

FreeType engine, it has a better performance and no dependability compared with MFCONFIG module  

4. Testing MF Integrator Module 

FreeType library supports many font formats like Truetype, Type1, etc. These format specific font modules are called 

driver modules. Based on the input, FreeType decides which driver module to call for further operations. For example, if the 

input file is Type1 format then FreeType calls Type1 driver module for processing it. FreeType doesn’t support a driver 

module for processing METAFONT files. 

For checking the working of this new MF Integrator module, a client application is used which is responsible for printing 

the styled font text on the screen. This client application takes a font file and text to be printed on the screen as input and passes 

this input to FreeType for processing. After processing by FreeType this application prints styled text on the screen. 

For testing that FreeType now directly supports METAFONT file input using MF Integrator module, a METAFONT 

called Computer Modern is input to the client application. This font file is passed to MF Integrator module using the Linker 

module. Linker module then examines the request and passes this METAFONT file to Administrator module. Administrator 

module takes this request, performs management related tasks, and passes the input file to Transformation module. 

Transformation module converts this METAFONT input file to its corresponding outline font file. This newly created font file 



Proceedings of Engineering and Technology Innovation, vol. 9, 2018, pp. 44 - 48 

Copyright ©  TAETI 

47 

is stored in the list for future reusability. This outline font file is then passed to FreeType core processing layer for further 

operations. After default operations by FreeType, it is returned to client application which displays the corresponding styled 

text on screen. Fig. 3 shows the results of the printing of METAFONT “Computer Modern normal font” and “Computer 

Modern bold font”.  

 
Fig. 3 Normal and bold styled METAFONT using MF Integrator Module 

The MF Integrator module is developed to overcome the problems of MFCONFIG module. It provides users to display 

various METAFONT styled fonts on screens just like any other fonts like TrueType etc. By just changing the parameters of 

METAFONT source file users can display different styled fonts on screen.  

As this module is implemented directly inside FreeType engine, its performance is very fast compared to the MFCONFIG 

module. FreeType receives a METAFONT request from client application and process it directly just like any other default 

Driver modules. MF Integrator module is only dependent on FreeType engine unlike MFCONFIG module which was 

dependent on FONTCONFIG. This module provides reusability and portability features and can be used in any operating 

system which supports FreeType engine.  

5. Conclusion 

In this paper, we proposed a module for FreeType engine named MF Integrator module. This module overcomes the 

problems like performance and dependability of MFCONFIG module. MF Integrator module provides a direct usage of 

METAFONT format as it is implemented directly inside FreeType. 

The research MFCONFIG module provided a way to use METAFONT format in current font system. But this module has 

its own problems; it is plugged in FONTCONFIG and not directly in FreeType, therefore if there is no FONTCONFIG library 

in the operating system, this module cannot be used. MFCONFIG module performance is also slow because it is implemented 

in the high-level of font system. 

We tested proposed module with a client application which is used to display styled text on screen. Users can now take the 

benefits of METAFONT by using our proposed MF Integrator module. Future work will consider about proposed module 

optimization and direct usage of bitmap fonts which is not supported by FreeType. 

Acknowledgment 

This work was supported by Institute for Information & communications Technology Promotion (IITP) grant funded by 

the Korean government(MSIT) (No. R0117-17-0001, Technology Development Project for Information, Communication, and 

Broadcast). 

References 

[1] D. E. Knuth, Computers & typesetting volume c: the metafont book, 1st ed. Boston: Addison-Wesley Professional, 1986. 

[2] “The GFtoPK processor,” http://texdoc.net/texmf-dist/doc/generic/knuth/mfware/gftopk.pdf, January 06, 2014. 



Proceedings of Engineering and Technology Innovation, vol. 9, 2018, pp. 44 - 48 

 

Copyright ©  TAETI 

48 

[3] D. Turner, R. Wilhelm, and W. Lemberg, “Freetype”, www.freetype.org, 2000. 

[4] J. Y. Choi, S. M. Kim, H. J. Lee, and G. H. Jung, “MFCONFIG: a METAFONT plug-in module for FreeType rasterizer,” 

TUGBoat, vol. 37, no. 2, pp. 163-170, 2016. 

[5] Keith Packard, “Font configuration and customization for ppen source systems”, 

https://keithp.com/keithp/talks/guadec2002/fontconfig.pdf 

[6] K. Packard, “The Xft Font Library: Architecture and Users Guide,” Proc. the XFree86 Technical Conference, USENIX 

Press, November 2001, pp. 1-17. 

https://keithp.com/keithp/talks/guadec2002/fontconfig.pdf