summaryrefslogtreecommitdiffstats
path: root/TOOLS/subfont-c/README
blob: b1e65e0464ea7f0d4b194439e3e17b511e6a08d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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.


Encodings:
~~~~~~~~~~
You can get any encoding and any charset.
1. If you want 8-bit charset, which is known to libc, encoded either in 8-bit
   or Unicode (like ISO-8859-*, KOI8-*):
   
   Find correct encoding name using `iconv --list' (on RedHat) and use it.
   For latin2 subtitles I would write:
   ./subfont iso-8859-2 24 verdana.ttf
   and for UTF-8 subtitles with latin2 charset:
   ./subfont --unicode iso-8859-2 24 verdana.ttf

2. If you want encoding not known to libc or non 8-bit (like EUC-KR):

   Create file describing your charset:

   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
   or (for UTF-8 subtitles):
       hexadecimal Unicode character code
       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

       or to get unicode font.desc, write only:
       0105

   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).  Simple script for this you will find in encodings directory.
   This should work with -unicode switch for mplayer (though this is not Unicode).
   It took about 10 seconds to render over 8000 characters on P3 @ 600MHz.


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).

  + 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>