summaryrefslogtreecommitdiffstats
path: root/TOOLS
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-13 18:37:10 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-13 18:37:10 +0000
commit1aef871541c7018a332a5544ee9698398fc994a6 (patch)
tree8bf4d39f242f52391398ecb8705fc1c958b2ea21 /TOOLS
parent8632ea05269cd3d71b21bc62832967267accaafa (diff)
downloadmpv-1aef871541c7018a332a5544ee9698398fc994a6.tar.bz2
mpv-1aef871541c7018a332a5544ee9698398fc994a6.tar.xz
upgraded to 1.0b version by Artur Zaprzala <artur.zaprzala@talex.com.pl>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1506 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'TOOLS')
-rw-r--r--TOOLS/subfont-c/Makefile22
-rw-r--r--TOOLS/subfont-c/README81
-rwxr-xr-xTOOLS/subfont-c/encodings/charmap2enc11
-rw-r--r--TOOLS/subfont-c/encodings/osd-mplayer15
-rwxr-xr-xTOOLS/subfont-c/encodings/runme-kr1
-rw-r--r--TOOLS/subfont-c/osd/README3
-rwxr-xr-xTOOLS/subfont-c/osd/gen.py441
-rw-r--r--TOOLS/subfont-c/osd/osd.t1a589
-rwxr-xr-xTOOLS/subfont-c/osd/runme5
-rwxr-xr-xTOOLS/subfont-c/runme24
-rw-r--r--TOOLS/subfont-c/subfont.c659
11 files changed, 1579 insertions, 272 deletions
diff --git a/TOOLS/subfont-c/Makefile b/TOOLS/subfont-c/Makefile
index 10e9e26879..23d35a07d4 100644
--- a/TOOLS/subfont-c/Makefile
+++ b/TOOLS/subfont-c/Makefile
@@ -1,24 +1,18 @@
-#font="/mnt/win/windows/fonts/arial.ttf"
-#font="/mnt/win/windows/fonts/comic.ttf"
-#font="/mnt/win/windows/fonts/verdanai.ttf"
-font="/mnt/win/windows/fonts/verdana.ttf"
-
-#encoding=windows-1250
-encoding=iso-8859-2
-
-fontsize=20
include ../../config.mak
LDLIBS=-lm $(shell freetype-config --libs)
CFLAGS=$(OPTFLAGS) $(shell freetype-config --cflags)
+#CFLAGS+=-DOLD_FREETYPE2
+#CFLAGS+=-g
+#CFLAGS+=-DDEBUG
+
+
subfont: subfont.o
-run: subfont
- ./subfont $(encoding) $(fontsize) $(font)
- cat font.desc.tail >> font.desc
- cp font.desc *.raw ~/.mplayer/font/
+subfont.S: subfont.c
+ $(CC) $(CFLAGS) -S $^ -o $@
clean:
- rm -f subfont subfont.o
+ rm -f subfont subfont.o core
diff --git a/TOOLS/subfont-c/README b/TOOLS/subfont-c/README
index b80eb900f4..5989787d1a 100644
--- a/TOOLS/subfont-c/README
+++ b/TOOLS/subfont-c/README
@@ -1,41 +1,62 @@
+Usage:
+~~~~~~
+1. Make sure you have FreeType 2 installed.
+2. Get a TrueType or Type 1 font.
+3. Modify `runme' script for your encoding and font path.
+4. Type: ./runme
+5. Copy *.raw and font.desc files to ~/.mplayer/font/
+6. Run subfont alone to see more options.
+
+
About:
~~~~~~
-`subfont' program renders antialiased fonts for mplayer using freetype library.
-Should work with TrueType, Type1 and any other font supported by libfreetype.
+`subfont' program renders antialiased OSD and subtitle fonts for mplayer.
-Goals:
- - internationalization: supports any 8 bit encoding (uses iconv).
- - nice look: creates glyph `shadows' using algorithm derived from gaussian blur (slow!).
+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.
-Note:
-~~~~~
-Starting x position of each char and the bitmap width is aligned to multiple of 8
-(required for under-development MMX renderer).
+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.
-Usage:
+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 14 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
+
+
+Notes:
~~~~~~
-Usage: subfont encoding ppem font [alphaFactor [minAlpha [radius]]]
- Program creates 3 files: font.desc, <encoding>-a.raw, <encoding>-b.raw.
- You should append font.desc.tail (desc for OSD characters by a'rpi & chass) to font.desc,
- and copy font.desc and all *.raw files to ~/.mplayer/font/ directory.
-
- encoding must be 8 bit encoding, like iso-8859-2.
- To list encodings available on your system use iconv -l.
- ppem Font size in pixels (e.g. 24).
- font Font file path. Any format supported by freetype library (*.ttf, *.pf?, *).
- alphaFactor Alpha map scaling factor (default is 1.0), float.
- minAlpha Alpha map minimum value (default is 1.0, max is 255), float.
- radius Alpha map blur radius (default is 6 pixels), integer.
-
-
-Example:
-~~~~~~~~
-make
-./subfont iso-8859-2 20 verdana.ttf
-cat font.desc.tail >> font.desc
-cp font.desc *.raw ~/.mplayer/font/
+ + 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:
diff --git a/TOOLS/subfont-c/encodings/charmap2enc b/TOOLS/subfont-c/encodings/charmap2enc
new file mode 100755
index 0000000000..e32d7a463b
--- /dev/null
+++ b/TOOLS/subfont-c/encodings/charmap2enc
@@ -0,0 +1,11 @@
+#!/usr/bin/awk -f
+# only for mostly 2-byte encodings like euc-kr
+
+$2~"^/x..$" {
+ c = substr($2, 3, 2)
+ if (c<"80")
+ print substr($1, 3, 4) "\t" c
+}
+$2~"^/x../x..$" {
+ print substr($1, 3, 4) "\t" substr($2, 3, 2) substr($2, 7, 2)
+}
diff --git a/TOOLS/subfont-c/encodings/osd-mplayer b/TOOLS/subfont-c/encodings/osd-mplayer
new file mode 100644
index 0000000000..26ab043016
--- /dev/null
+++ b/TOOLS/subfont-c/encodings/osd-mplayer
@@ -0,0 +1,15 @@
+E001 01
+E002 02
+E003 03
+E004 04
+E005 05
+E006 06
+E007 07
+E008 08
+E009 09
+E00A 0A
+E00B 0B
+E010 10
+E011 11
+E012 12
+E013 13
diff --git a/TOOLS/subfont-c/encodings/runme-kr b/TOOLS/subfont-c/encodings/runme-kr
new file mode 100755
index 0000000000..df4e81e15c
--- /dev/null
+++ b/TOOLS/subfont-c/encodings/runme-kr
@@ -0,0 +1 @@
+gunzip -c /usr/share/i18n/charmaps/EUC-KR.gz | ./charmap2enc > euc-kr
diff --git a/TOOLS/subfont-c/osd/README b/TOOLS/subfont-c/osd/README
new file mode 100644
index 0000000000..9dec5e5971
--- /dev/null
+++ b/TOOLS/subfont-c/osd/README
@@ -0,0 +1,3 @@
+Requires t1utils and python.
+
+Based on font created by chass.
diff --git a/TOOLS/subfont-c/osd/gen.py b/TOOLS/subfont-c/osd/gen.py
new file mode 100755
index 0000000000..bf08fb8838
--- /dev/null
+++ b/TOOLS/subfont-c/osd/gen.py
@@ -0,0 +1,441 @@
+#!/usr/bin/python
+
+from math import *
+import sys
+import string
+
+k = (sqrt(2.)-1.)*4./3.
+
+chars = []
+encoding = []
+count = 1
+first = 1
+
+def append(s):
+ chars.append(s)
+
+def rint(x):
+ return int(round(x))
+"""
+ if x>=0:
+ return int(x+0.5)
+ else:
+ return int(x-0.5)
+"""
+
+class vec:
+ def __init__(self, x, y=0):
+ if type(x) is type(()):
+ self.x, self.y = x
+ else:
+ self.x = x
+ self.y = y
+ def set(self, x, y):
+ self.__init__(x, y)
+ def move(self, x, y):
+ self.x = self.x + x
+ self.y = self.y + y
+ def __add__(self, v):
+ return vec(self.x+v.x, self.y+v.y)
+ def __sub__(self, v):
+ return vec(self.x-v.x, self.y-v.y)
+ def int(self):
+ return vec(rint(self.x), rint(self.y))
+ def t(self):
+ return (self.x, self.y)
+
+class pvec(vec):
+ def __init__(self, l, a):
+ self.x = l * cos(a)
+ self.y = l * sin(a)
+
+
+pen = vec(0,0)
+
+def moveto(x, y=0):
+ global first
+ dx = rint(x-pen.x)
+ dy = rint(y-pen.y)
+ if dx!=0:
+ if dy!=0:
+ append("\t%i %i rmoveto" % (dx, dy))
+ else:
+ append("\t%i hmoveto" % (dx))
+ elif dy!=0:
+ append("\t%i vmoveto" % (dy))
+ elif first:
+ append("\t0 hmoveto")
+ first = 0
+ pen.x = pen.x+dx
+ pen.y = pen.y+dx
+
+def rlineto(v):
+ if v.x!=0:
+ if v.y!=0:
+ append("\t%i %i rlineto" % (v.x, v.y))
+ else:
+ append("\t%i hlineto" % (v.x))
+ elif v.y!=0:
+ append("\t%i vlineto" % (v.y))
+
+def closepath():
+ append("\tclosepath")
+
+history = []
+def movebase(x, y=0):
+ history.append((x,y))
+ pen.move(-x, -y)
+
+def moveback():
+ x, y = history.pop()
+ pen.move(x, y)
+
+def ellipse(rx, ry = None, half=0):
+ # rx>0 => counter-clockwise (filled)
+ # rx<0 => clockwise
+
+ if ry==None: ry = abs(rx)
+
+ dx1 = rint(k*rx)
+ dx2 = rx-dx1
+
+ dy1 = rint(k*ry)
+ dy2 = ry-dy1
+
+ rx = abs(rx)
+ moveto(0, -ry)
+ append("\t%i 0 %i %i 0 %i rrcurveto" % (+dx1, +dx2, +dy2, +dy1))
+ append("\t0 %i %i %i %i 0 rrcurveto" % (+dy1, -dx2, +dy2, -dx1))
+ if not half:
+ append("\t%i 0 %i %i 0 %i rrcurveto" % (-dx1, -dx2, -dy2, -dy1))
+ append("\t0 %i %i %i %i 0 rrcurveto" % (-dy1, +dx2, -dy2, +dx1))
+ closepath()
+ if half:
+ pen.set(0, ry)
+ else:
+ pen.set(0, -ry)
+
+circle = ellipse
+
+def rect(w, h):
+ moveto(0, 0)
+ if w>0:
+ append("\t%i hlineto" % (w))
+ append("\t%i vlineto" % (h))
+ append("\t%i hlineto" % (-w))
+ pen.set(0, h)
+ else:
+ append("\t%i vlineto" % (h))
+ append("\t%i hlineto" % (-w))
+ append("\t%i vlineto" % (-h))
+ pen.set(-w, 0)
+ closepath()
+
+def poly(p):
+ moveto(0, 0)
+ prev = vec(0, 0)
+ for q in p:
+ rlineto(vec(q)-prev)
+ prev = vec(q)
+ closepath()
+ pen.set(prev.x, prev.y)
+
+def line(w, l, a):
+ vw = pvec(w*.5, a-pi*.5)
+ vl = pvec(l, a)
+ p = vw
+ moveto(p.x, p.y)
+ p0 = p
+ #print '%%wla %i %i %.3f: %.3f %.3f' % (w, l, a, p0.x, p0.y)
+ p = p+vl
+ rlineto((p-p0).int())
+ p0 = p
+ #print '%%wla %i %i %.3f: %.3f %.3f' % (w, l, a, p0.x, p0.y)
+ p = p-vw-vw
+ rlineto((p-p0).int())
+ p0 = p
+ #print '%%wla %i %i %.3f: %.3f %.3f' % (w, l, a, p0.x, p0.y)
+ p = p-vl
+ #print '%%wla %i %i %.3f: %.3f %.3f' % (w, l, a, p.x, p.y)
+ rlineto((p-p0).int())
+ closepath()
+ pen.set(p.x, p.y)
+
+
+def begin(name, code, hsb, w):
+ global first, count, history
+ history = []
+ pen.set(0, 0)
+ append("""\
+/uni%04X { %% %s
+ %i %i hsbw""" % (code+0xE000, name, hsb, w))
+ i = len(encoding)
+ while i<code:
+ encoding.append('dup %i /.notdef put' % (i,))
+ i = i+1
+ encoding.append('dup %i /uni%04X put' % (code, code+0xE000))
+ count = count + 1
+ first = 1
+
+
+def end():
+ append("""\
+ endchar
+} ND""")
+
+
+
+########################################
+
+r = 400
+s = 375
+hsb = 200 # horizontal side bearing
+hsb2 = 30
+over = 10 # overshoot
+width = 2*r+2*over+2*hsb2
+
+########################################
+begin('play', 0x01, hsb, width)
+poly(( (s,r),
+ (0, 2*r),))
+end()
+
+
+########################################
+w=150
+begin('pause', 0x02, hsb, width)
+rect(w, 2*r)
+movebase(2*w)
+rect(w, 2*r)
+end()
+
+
+########################################
+begin('stop', 0x03, hsb, width)
+rect(665, 720)
+end()
+
+
+########################################
+begin('rewind', 0x04, hsb/2, width)
+movebase(2*s+15)
+poly(( (0, 2*r),
+ (-s, r),))
+movebase(-s-15)
+poly(( (0, 2*r),
+ (-s, r),))
+end()
+
+
+########################################
+begin('fast forward', 0x05, hsb/2, width)
+poly(( (s,r),
+ (0, 2*r),))
+movebase(s+15)
+poly(( (s,r),
+ (0, 2*r),))
+end()
+
+
+########################################
+begin('clock', 0x06, hsb2, width)
+movebase(r, r)
+circle(r+over)
+wc = 65
+r0 = r-3*wc
+n = 4
+movebase(-wc/2, -wc/2)
+rect(-wc, wc)
+moveback()
+for i in range(n):
+ a = i*2*pi/n
+ v = pvec(r0, a)
+ movebase(v.x, v.y)
+ line(-wc, r-r0, a)
+ moveback()
+hh = 11
+mm = 8
+line(-50, r*.5, pi/2-2*pi*(hh+mm/60.)/12)
+line(-40, r*.9, pi/2-2*pi*mm/60.)
+end()
+
+
+########################################
+begin('contrast', 0x07, hsb2, width)
+movebase(r, r)
+circle(r+over)
+circle(-(r+over-80), half=1)
+end()
+
+
+########################################
+begin('saturation', 0x08, hsb2, width)
+movebase(r, r)
+circle(r+over)
+circle(-(r+over-80))
+
+v = pvec(160, pi/2)
+movebase(v.x, v.y)
+circle(80)
+moveback()
+
+v = pvec(160, pi/2+pi*2/3)
+movebase(v.x, v.y)
+circle(80)
+moveback()
+
+v = pvec(160, pi/2-pi*2/3)
+movebase(v.x, v.y)
+circle(80)
+end()
+
+
+########################################
+begin('volume', 0x09, 0, 1000)
+poly(( (1000, 0),
+ (0, 500),))
+end()
+
+
+########################################
+begin('brightness', 0x0A, hsb2, width)
+movebase(r, r)
+circle(150)
+circle(-100)
+
+rb = 375
+wb = 50
+l = 140
+n = 8
+for i in range(n):
+ a = i*2*pi/n
+ v = pvec(l, a)
+ movebase(v.x, v.y)
+ line(wb, rb-l, a)
+ moveback()
+end()
+
+
+########################################
+begin('hue', 0x0B, hsb2, width)
+movebase(r, r)
+circle(r+over)
+ellipse(-(322), 166)
+movebase(0, 280)
+circle(-(60))
+end()
+
+
+########################################
+begin('progress [', 0x10, (334-182)/2, 334)
+poly(( (182, 0),
+ (182, 90),
+ (145, 90),
+ (145, 550),
+ (182, 550),
+ (182, 640),
+ (0, 640),
+))
+end()
+
+
+########################################
+begin('progress |', 0x11, (334-166)/2, 334)
+rect(166, 640)
+end()
+
+
+########################################
+begin('progress ]', 0x12, (334-182)/2, 334)
+poly(( (182, 0),
+ (182, 640),
+ (0, 640),
+ (0, 550),
+ (37, 550),
+ (37, 90),
+ (0, 90),
+))
+end()
+
+
+########################################
+begin('progress .', 0x13, (334-130)/2, 334)
+movebase(0, (640-130)/2)
+rect(130, 130)
+end()
+
+
+
+########################################
+print """\
+%!PS-AdobeFont-1.0: OSD 1.00
+%%CreationDate: Sun Jul 22 12:38:28 2001
+%
+%%EndComments
+12 dict begin
+/FontInfo 9 dict dup begin
+/version (Version 1.00) readonly def
+/Notice () readonly def
+/FullName (OSD) readonly def
+/FamilyName (OSD) readonly def
+/Weight (Regular) readonly def
+/ItalicAngle 0.000000 def
+/isFixedPitch false def
+/UnderlinePosition -133 def
+/UnderlineThickness 49 def
+end readonly def
+/FontName /OSD def
+/PaintType 0 def
+/StrokeWidth 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/FontBBox {0 -10 1000 800} readonly def
+/Encoding 256 array"""
+
+print string.join(encoding, '\n')
+i = len(encoding)
+while i<256:
+ print 'dup %i /.notdef put' % i
+ i = i+1
+
+
+print """\
+readonly def
+currentdict end
+currentfile eexec
+dup /Private 15 dict dup begin
+/RD{string currentfile exch readstring pop}executeonly def
+/ND{noaccess def}executeonly def
+/NP{noaccess put}executeonly def
+/ForceBold false def
+/BlueValues [ -15 0 717 734 693 708 630 649 593 611 658 679 780 800 ] def
+/OtherBlues [ -112 -93 -200 -178 -45 -26 -134 -116 -71 -51 ] def
+/StdHW [ 7 ] def
+/StdVW [ 8 ] def
+/StemSnapH [ 4 7 10 13 18 22 27 30 33 38 61 65 ] def
+/StemSnapV [ 5 8 11 15 18 21 25 30 33 36 52 64 ] def
+/MinFeature {16 16} def
+/password 5839 def
+/Subrs 1 array
+dup 0 {
+ return
+ } NP
+ ND
+2 index
+/CharStrings %i dict dup begin""" % count
+
+print """\
+/.notdef {
+ 0 400 hsbw
+ endchar
+} ND"""
+
+print string.join(chars, '\n')
+
+
+print """\
+end
+end
+readonly put
+noaccess put
+dup/FontName get exch definefont pop
+mark currentfile closefile"""
diff --git a/TOOLS/subfont-c/osd/osd.t1a b/TOOLS/subfont-c/osd/osd.t1a
new file mode 100644
index 0000000000..11e3150a6c
--- /dev/null
+++ b/TOOLS/subfont-c/osd/osd.t1a
@@ -0,0 +1,589 @@
+%!PS-AdobeFont-1.0: OSD 1.00
+%%CreationDate: Sun Jul 22 12:38:28 2001
+%
+%%EndComments
+12 dict begin
+/FontInfo 9 dict dup begin
+/version (Version 1.00) readonly def
+/Notice () readonly def
+/FullName (OSD) readonly def
+/FamilyName (OSD) readonly def
+/Weight (Regular) readonly def
+/ItalicAngle 0.000000 def
+/isFixedPitch false def
+/UnderlinePosition -133 def
+/UnderlineThickness 49 def
+end readonly def
+/FontName /OSD def
+/PaintType 0 def
+/StrokeWidth 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/FontBBox {0 -10 1000 800} readonly def
+/Encoding 256 array
+dup 0 /.notdef put
+dup 1 /uniE001 put
+dup 2 /uniE002 put
+dup 3 /uniE003 put
+dup 4 /uniE004 put
+dup 5 /uniE005 put
+dup 6 /uniE006 put
+dup 7 /uniE007 put
+dup 8 /uniE008 put
+dup 9 /uniE009 put
+dup 10 /uniE00A put
+dup 11 /uniE00B put
+dup 12 /.notdef put
+dup 13 /.notdef put
+dup 14 /.notdef put
+dup 15 /.notdef put
+dup 16 /uniE010 put
+dup 17 /uniE011 put
+dup 18 /uniE012 put
+dup 19 /uniE013 put
+dup 20 /.notdef put
+dup 21 /.notdef put
+dup 22 /.notdef put
+dup 23 /.notdef put
+dup 24 /.notdef put
+dup 25 /.notdef put
+dup 26 /.notdef put
+dup 27 /.notdef put
+dup 28 /.notdef put
+dup 29 /.notdef put
+dup 30 /.notdef put
+dup 31 /.notdef put
+dup 32 /.notdef put
+dup 33 /.notdef put
+dup 34 /.notdef put
+dup 35 /.notdef put
+dup 36 /.notdef put
+dup 37 /.notdef put
+dup 38 /.notdef put
+dup 39 /.notdef put
+dup 40 /.notdef put
+dup 41 /.notdef put
+dup 42 /.notdef put
+dup 43 /.notdef put
+dup 44 /.notdef put
+dup 45 /.notdef put
+dup 46 /.notdef put
+dup 47 /.notdef put
+dup 48 /.notdef put
+dup 49 /.notdef put
+dup 50 /.notdef put
+dup 51 /.notdef put
+dup 52 /.notdef put
+dup 53 /.notdef put
+dup 54 /.notdef put
+dup 55 /.notdef put
+dup 56 /.notdef put
+dup 57 /.notdef put
+dup 58 /.notdef put
+dup 59 /.notdef put
+dup 60 /.notdef put
+dup 61 /.notdef put
+dup 62 /.notdef put
+dup 63 /.notdef put
+dup 64 /.notdef put
+dup 65 /.notdef put
+dup 66 /.notdef put
+dup 67 /.notdef put
+dup 68 /.notdef put
+dup 69 /.notdef put
+dup 70 /.notdef put
+dup 71 /.notdef put
+dup 72 /.notdef put
+dup 73 /.notdef put
+dup 74 /.notdef put
+dup 75 /.notdef put
+dup 76 /.notdef put
+dup 77 /.notdef put
+dup 78 /.notdef put
+dup 79 /.notdef put
+dup 80 /.notdef put
+dup 81 /.notdef put
+dup 82 /.notdef put
+dup 83 /.notdef put
+dup 84 /.notdef put
+dup 85 /.notdef put
+dup 86 /.notdef put
+dup 87 /.notdef put
+dup 88 /.notdef put
+dup 89 /.notdef put
+dup 90 /.notdef put
+dup 91 /.notdef put
+dup 92 /.notdef put
+dup 93 /.notdef put
+dup 94 /.notdef put
+dup 95 /.notdef put
+dup 96 /.notdef put
+dup 97 /.notdef put
+dup 98 /.notdef put
+dup 99 /.notdef put
+dup 100 /.notdef put
+dup 101 /.notdef put
+dup 102 /.notdef put
+dup 103 /.notdef put
+dup 104 /.notdef put
+dup 105 /.notdef put
+dup 106 /.notdef put
+dup 107 /.notdef put
+dup 108 /.notdef put
+dup 109 /.notdef put
+dup 110 /.notdef put
+dup 111 /.notdef put
+dup 112 /.notdef put
+dup 113 /.notdef put
+dup 114 /.notdef put
+dup 115 /.notdef put
+dup 116 /.notdef put
+dup 117 /.notdef put
+dup 118 /.notdef put
+dup 119 /.notdef put
+dup 120 /.notdef put
+dup 121 /.notdef put
+dup 122 /.notdef put
+dup 123 /.notdef put
+dup 124 /.notdef put
+dup 125 /.notdef put
+dup 126 /.notdef put
+dup 127 /.notdef put
+dup 128 /.notdef put
+dup 129 /.notdef put
+dup 130 /.notdef put
+dup 131 /.notdef put
+dup 132 /.notdef put
+dup 133 /.notdef put
+dup 134 /.notdef put
+dup 135 /.notdef put
+dup 136 /.notdef put
+dup 137 /.notdef put
+dup 138 /.notdef put
+dup 139 /.notdef put
+dup 140 /.notdef put
+dup 141 /.notdef put
+dup 142 /.notdef put
+dup 143 /.notdef put
+dup 144 /.notdef put
+dup 145 /.notdef put
+dup 146 /.notdef put
+dup 147 /.notdef put
+dup 148 /.notdef put
+dup 149 /.notdef put
+dup 150 /.notdef put
+dup 151 /.notdef put
+dup 152 /.notdef put
+dup 153 /.notdef put
+dup 154 /.notdef put
+dup 155 /.notdef put
+dup 156 /.notdef put
+dup 157 /.notdef put
+dup 158 /.notdef put
+dup 159 /.notdef put
+dup 160 /.notdef put
+dup 161 /.notdef put
+dup 162 /.notdef put
+dup 163 /.notdef put
+dup 164 /.notdef put
+dup 165 /.notdef put
+dup 166 /.notdef put
+dup 167 /.notdef put
+dup 168 /.notdef put
+dup 169 /.notdef put
+dup 170 /.notdef put
+dup 171 /.notdef put
+dup 172 /.notdef put
+dup 173 /.notdef put
+dup 174 /.notdef put
+dup 175 /.notdef put
+dup 176 /.notdef put
+dup 177 /.notdef put
+dup 178 /.notdef put
+dup 179 /.notdef put
+dup 180 /.notdef put
+dup 181 /.notdef put
+dup 182 /.notdef put
+dup 183 /.notdef put
+dup 184 /.notdef put
+dup 185 /.notdef put
+dup 186 /.notdef put
+dup 187 /.notdef put
+dup 188 /.notdef put
+dup 189 /.notdef put
+dup 190 /.notdef put
+dup 191 /.notdef put
+dup 192 /.notdef put
+dup 193 /.notdef put
+dup 194 /.notdef put
+dup 195 /.notdef put
+dup 196 /.notdef put
+dup 197 /.notdef put
+dup 198 /.notdef put
+dup 199 /.notdef put
+dup 200 /.notdef put
+dup 201 /.notdef put
+dup 202 /.notdef put
+dup 203 /.notdef put
+dup 204 /.notdef put
+dup 205 /.notdef put
+dup 206 /.notdef put
+dup 207 /.notdef put
+dup 208 /.notdef put
+dup 209 /.notdef put
+dup 210 /.notdef put
+dup 211 /.notdef put
+dup 212 /.notdef put
+dup 213 /.notdef put
+dup 214 /.notdef put
+dup 215 /.notdef put
+dup 216 /.notdef put
+dup 217 /.notdef put
+dup 218 /.notdef put
+dup 219 /.notdef put
+dup 220 /.notdef put
+dup 221 /.notdef put
+dup 222 /.notdef put
+dup 223 /.notdef put
+dup 224 /.notdef put
+dup 225 /.notdef put
+dup 226 /.notdef put
+dup 227 /.notdef put
+dup 228 /.notdef put
+dup 229 /.notdef put
+dup 230 /.notdef put
+dup 231 /.notdef put
+dup 232 /.notdef put
+dup 233 /.notdef put
+dup 234 /.notdef put
+dup 235 /.notdef put
+dup 236 /.notdef put
+dup 237 /.notdef put
+dup 238 /.notdef put
+dup 239 /.notdef put
+dup 240 /.notdef put
+dup 241 /.notdef put
+dup 242 /.notdef put
+dup 243 /.notdef put
+dup 244 /.notdef put
+dup 245 /.notdef put
+dup 246 /.notdef put
+dup 247 /.notdef put
+dup 248 /.notdef put
+dup 249 /.notdef put
+dup 250 /.notdef put
+dup 251 /.notdef put
+dup 252 /.notdef put
+dup 253 /.notdef put
+dup 254 /.notdef put
+dup 255 /.notdef put
+readonly def
+currentdict end
+currentfile eexec
+dup /Private 15 dict dup begin
+/RD{string currentfile exch readstring pop}executeonly def
+/ND{noaccess def}executeonly def
+/NP{noaccess put}executeonly def
+/ForceBold false def
+/BlueValues [ -15 0 717 734 693 708 630 649 593 611 658 679 780 800 ] def
+/OtherBlues [ -112 -93 -200 -178 -45 -26 -134 -116 -71 -51 ] def
+/StdHW [ 7 ] def
+/StdVW [ 8 ] def
+/StemSnapH [ 4 7 10 13 18 22 27 30 33 38 61 65 ] def
+/StemSnapV [ 5 8 11 15 18 21 25 30 33 36 52 64 ] def
+/MinFeature {16 16} def
+/password 5839 def
+/Subrs 1 array
+dup 0 {
+ return
+ } NP
+ ND
+2 index
+/CharStrings 16 dict dup begin
+/.notdef {
+ 0 400 hsbw
+ endchar
+} ND
+/uniE001 { % play
+ 200 880 hsbw
+ 0 hmoveto
+ 375 400 rlineto
+ -375 400 rlineto
+ closepath
+ endchar
+} ND
+/uniE002 { % pause
+ 200 880 hsbw
+ 0 hmoveto
+ 150 hlineto
+ 800 vlineto
+ -150 hlineto
+ closepath
+ 300 -800 rmoveto
+ 150 hlineto
+ 800 vlineto
+ -150 hlineto
+ closepath
+ endchar
+} ND
+/uniE003 { % stop
+ 200 880 hsbw
+ 0 hmoveto
+ 665 hlineto
+ 720 vlineto
+ -665 hlineto
+ closepath
+ endchar
+} ND
+/uniE004 { % rewind
+ 100 880 hsbw
+ 765 hmoveto
+ 800 vlineto
+ -375 -400 rlineto
+ closepath
+ -15 -400 rmoveto
+ 800 vlineto
+ -375 -400 rlineto
+ closepath
+ endchar
+} ND
+/uniE005 { % fast forward
+ 100 880 hsbw
+ 0 hmoveto
+ 375 400 rlineto
+ -375 400 rlineto
+ closepath
+ 390 -800 rmoveto
+ 375 400 rlineto
+ -375 400 rlineto
+ closepath
+ endchar
+} ND
+/uniE006 { % clock
+ 30 880 hsbw
+ 400 -10 rmoveto
+ 226 0 184 184 0 226 rrcurveto
+ 0 226 -184 184 -226 0 rrcurveto
+ -226 0 -184 -184 0 -226 rrcurveto
+ 0 -226 184 -184 226 0 rrcurveto
+ closepath
+ -33 377 rmoveto
+ 65 vlineto
+ 65 hlineto
+ -65 vlineto
+ closepath
+ 173 66 rmoveto
+ 195 hlineto
+ -65 vlineto
+ -195 hlineto
+ closepath
+ -238 238 rmoveto
+ 195 vlineto
+ 65 hlineto
+ -195 vlineto
+ closepath
+ -238 -237 rmoveto
+ -195 hlineto
+ 65 vlineto
+ 195 hlineto
+ closepath
+ 237 -238 rmoveto
+ -195 vlineto
+ -65 hlineto
+ 195 vlineto
+ closepath
+ 10 194 rmoveto
+ -88 180 rlineto
+ 45 22 rlineto
+ 88 -180 rlineto
+ closepath
+ -36 4 rmoveto
+ 268 241 rlineto
+ 27 -30 rlineto
+ -268 -241 rlineto
+ closepath
+ endchar
+} ND
+/uniE007 { % contrast
+ 30 880 hsbw
+ 400 -10 rmoveto
+ 226 0 184 184 0 226 rrcurveto
+ 0 226 -184 184 -226 0 rrcurveto
+ -226 0 -184 -184 0 -226 rrcurveto
+ 0 -226 184 -184 226 0 rrcurveto
+ closepath
+ 80 vmoveto
+ -182 0 -148 148 0 182 rrcurveto
+ 0 182 148 148 182 0 rrcurveto
+ closepath
+ endchar
+} ND
+/uniE008 { % saturation
+ 30 880 hsbw
+ 400 -10 rmoveto
+ 226 0 184 184 0 226 rrcurveto
+ 0 226 -184 184 -226 0 rrcurveto
+ -226 0 -184 -184 0 -226 rrcurveto
+ 0 -226 184 -184 226 0 rrcurveto
+ closepath
+ 80 vmoveto
+ -182 0 -148 148 0 182 rrcurveto
+ 0 182 148 148 182 0 rrcurveto
+ 182 0 148 -148 0 -182 rrcurveto
+ 0 -182 -148 -148 -182 0 rrcurveto
+ closepath
+ 410 vmoveto
+ 44 0 36 36 0 44 rrcurveto
+ 0 44 -36 36 -44 0 rrcurveto
+ -44 0 -36 -36 0 -44 rrcurveto
+ 0 -44 36 -36 44 0 rrcurveto
+ closepath
+ -139 -240 rmoveto
+ 44 0 36 36 0 44 rrcurveto
+ 0 44 -36 36 -44 0 rrcurveto
+ -44 0 -36 -36 0 -44 rrcurveto
+ 0 -44 36 -36 44 0 rrcurveto
+ closepath
+ 277 hmoveto
+ 44 0 36 36 0 44 rrcurveto
+ 0 44 -36 36 -44 0 rrcurveto
+ -44 0 -36 -36 0 -44 rrcurveto
+ 0 -44 36 -36 44 0 rrcurveto
+ closepath
+ endchar
+} ND
+/uniE009 { % volume
+ 0 1000 hsbw
+ 0 hmoveto
+ 1000 hlineto
+ -1000 500 rlineto
+ closepath
+ endchar
+} ND
+/uniE00A { % brightness
+ 30 880 hsbw
+ 400 250 rmoveto
+ 83 0 67 67 0 83 rrcurveto
+ 0 83 -67 67 -83 0 rrcurveto
+ -83 0 -67 -67 0 -83 rrcurveto
+ 0 -83 67 -67 83 0 rrcurveto
+ closepath
+ 50 vmoveto
+ -55 0 -45 45 0 55 rrcurveto
+ 0 55 45 45 55 0 rrcurveto
+ 55 0 45 -45 0 -55 rrcurveto
+ 0 -55 -45 -45 -55 0 rrcurveto
+ closepath
+ 140 75 rmoveto
+ 235 hlineto
+ 50 vlineto
+ -235 hlineto
+ closepath
+ -23 56 rmoveto
+ 166 166 rlineto
+ -35 35 rlineto
+ -166 -166 rlineto
+ closepath
+ -56 23 rmoveto
+ 235 vlineto
+ -50 hlineto
+ -235 vlineto
+ closepath
+ -56 -23 rmoveto
+ -166 166 rlineto
+ -35 -35 rlineto
+ 166 -166 rlineto
+ closepath
+ -23 -56 rmoveto
+ -235 hlineto
+ -50 vlineto
+ 235 hlineto
+ closepath
+ 23 -56 rmoveto
+ -166 -166 rlineto
+ 35 -35 rlineto
+ 166 166 rlineto
+ closepath
+ 56 -23 rmoveto
+ -235 vlineto
+ 50 hlineto
+ 235 vlineto
+ closepath
+ 56 23 rmoveto
+ 166 -166 rlineto
+ 35 35 rlineto
+ -166 166 rlineto
+ closepath
+ endchar
+} ND
+/uniE00B { % hue
+ 30 880 hsbw
+ 400 -10 rmoveto
+ 226 0 184 184 0 226 rrcurveto
+ 0 226 -184 184 -226 0 rrcurveto
+ -226 0 -184 -184 0 -226 rrcurveto
+ 0 -226 184 -184 226 0 rrcurveto
+ closepath
+ 244 vmoveto
+ -178 0 -144 74 0 92 rrcurveto
+ 0 92 144 74 178 0 rrcurveto
+ 178 0 144 -74 0 -92 rrcurveto
+ 0 -92 -144 -74 -178 0 rrcurveto
+ closepath
+ 386 vmoveto
+ -33 0 -27 27 0 33 rrcurveto
+ 0 33 27 27 33 0 rrcurveto
+ 33 0 27 -27 0 -33 rrcurveto
+ 0 -33 -27 -27 -33 0 rrcurveto
+ closepath
+ endchar
+} ND
+/uniE010 { % progress [
+ 76 334 hsbw
+ 0 hmoveto
+ 182 hlineto
+ 90 vlineto
+ -37 hlineto
+ 460 vlineto
+ 37 hlineto
+ 90 vlineto
+ -182 hlineto
+ closepath
+ endchar
+} ND
+/uniE011 { % progress |
+ 84 334 hsbw
+ 0 hmoveto
+ 166 hlineto
+ 640 vlineto
+ -166 hlineto
+ closepath
+ endchar
+} ND