mpv/TOOLS/subfont-c/README

94 lines
3.3 KiB
Plaintext
Raw Normal View History

Usage:
~~~~~~
1. Make sure you have FreeType 2 installed.
2. Get a TrueType or Type 1 font.
3. Run ./configure from mplayer's root directory.
4. Modify `runme' script for your encoding and font path.
5. Type: ./runme
6. Copy *.raw and font.desc files to ~/.mplayer/font/
7. Run subfont alone to see more options.
About:
~~~~~~
`subfont' program renders antialiased OSD and subtitle fonts for mplayer.
What you get are bitmap and alpha *.raw files and a font.desc.
What you need is TrueType, Type 1 or any other font supported by FreeType.
Alpha channel is created using outline and Gaussian blur filters.
ANY encoding is now supported! That is, all 8-bit encodings known by libc
and user-supplied encodings (also multibyte) through custom encoding files.
I prepared also Type 1 font `osd.pfb' for OSD characters based on bitmaps
created by chass.
Subfont was tested with Korean fonts from truetype-fonts-ko-2.0-1k.noarch.rpm
I found on http://rpmfind.net/ and euc-kr encoding. Custom encoding file
for euc-kr was generated from charmap I found in /usr/share/i18n/charmaps/EUC-KR.gz
(glibc package). This should work with -unicode switch for mplayer
(though it is not Unicode encoding).
It took about 10 seconds to render over 8000 characters on P3 @ 600MHz.
Custom encodings:
~~~~~~~~~~~~~~~~~
For each character you want to render write the line consisting of:
hexadecimal Unicode character code,
followed by whitespace,
followed by hexadecimal number representing your encoding,
followed by new line character.
Example: to render a single letter `aogonek' (Unicode 0x0105) and encode
it using iso-8859-2 encoding (0xB1), your custom encoding file will consist
of a sigle line:
0105 B1
New font.desc format (proposal):
~~~~~~~~~~~~~~~~~~~~~==========~
Subfont will generate new font.desc format when compiled with NEW_DESC macro defined
(uncomment appropriate line in Makefile).
These changes are to make bitmaps smaller and processing faster.
Changes to [info] section:
There is no `spacewidth'. It will not be useful.
`height` is the distance from one baseline to the next.
`ascender' is the distance from the baseline to the highest grid coordinate used to place the outline point.
`descender' is the distance from the baseline to the lowest grid coordinate used to place the outline point.
Note: upwards direction is positive.
Read more: freetype-2.*/docs/glyphs/glyphs-3.html
Changes to [characters] section:
Bitmap start and bitmap end are replaced with:
bitmap start,
bitmap width,
bitmap height,
left bearing -- the horizontal distance from the current pen position to the bitmaps's left edge,
top bearing -- the vertical distance from the baseline to the bitmaps's top edge,
advance -- the horizontal distance the pen position must be incremented by after each glyph is rendered.
To anderstand this you must think in verctorial coordinates.
Necessarily read freetype-2.*/docs/glyphs/glyphs-7.html about vectorial coordinates!
Notes:
~~~~~~
+ Starting x position of each character and the bitmap width is aligned
to multiple of 8 (required by mplayer).
+ Currently subfont won't work on big-endian systems.
+ My development platform is RedHat 7.1. FreeType versions tested are
2.0.1 through 2.0.4.
+ FreeType library has a bug that makes subfont display some warning message
about Unicode charmap for osd.pfb.
Author:
~~~~~~~
Artur Zaprzala <zybi@fanthom.irc.pl>