From: Chris Tallon Date: Wed, 21 Aug 2024 17:01:33 +0000 (+0000) Subject: Reorganise build system X-Git-Url: https://git.vomp.tv/gitweb/?a=commitdiff_plain;h=ce4829d4f648ab02cd7d252baa8c40ac5eee299b;p=vompclient.git Reorganise build system --- diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 871ef78..0000000 --- a/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -*~ -.#* -config.json -build -compile-config -initssh diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..aa2c7b9 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,250 @@ +# CMAKE_SOURCE_DIR - top of git tree +# CMAKE_BINARY_DIR - build dir top + +cmake_minimum_required(VERSION 3.13.4) + +# set(CMAKE_VERBOSE_ON) +# set(CMAKE_VERBOSE_MAKEFILE ON) + +include(${CMAKE_SOURCE_DIR}/../cmake.config) + +set(ENABLE_MOLD ${CONFIG_ENABLE_MOLD}) +set(MOLD_BIN ${CONFIG_MOLD_BIN}) +set(FORCE_COLOR ${CONFIG_FORCE_COLOR}) +set(ALL_WARNINGS ${CONFIG_ALL_WARNINGS}) + +if(CONFIG_CROSS_COMPILE) + if(CONFIG_CROSS_COMPILER STREQUAL gcc) + set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/CMakeToolChainRPiGCC.txt) + elseif(CONFIG_CROSS_COMPILER STREQUAL clang) + set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/CMakeToolChainRPiClang.txt) + endif() +endif() + + + +set (VOMP_OBJ_COMMON + src/util.cc + src/control.cc + src/thread.cc + src/timers.cc + src/i18n.cc + src/udp4.cc + src/udp6.cc + src/vdpc.cc + src/tcp.cc + src/message.cc + src/messagequeue.cc + src/wol.cc + src/audio.cc + src/video.cc + src/vdr.cc + src/recman.cc + src/recording.cc + src/recinfo.cc + src/channel.cc + src/rectimer.cc + src/event.cc + src/directory.cc + src/mark.cc + src/option.cc + src/vfeed.cc + src/afeed.cc + src/demuxer.cc + src/demuxervdr.cc + src/demuxerts.cc + src/stream.cc + src/osd.cc + src/surface.cc + src/region.cc + src/colour.cc + src/boxstack.cc + src/boxx.cc + src/tbboxx.cc + src/vrecording.cc + src/vinfo.cc + src/vquestion.cc + src/vrecordinglist.cc + src/vrecordinglistclassic.cc + src/vrecordinglistadvanced.cc + src/vepgsummary.cc + src/vepglistadvanced.cc + src/vmute.cc + src/vvolume.cc + src/vtimerlist.cc + src/vtimeredit.cc + src/vrecordingmenu.cc + src/vchannellist.cc + src/vwelcome.cc + src/vvideorec.cc + src/vepgsettimer.cc + src/vchannelselect.cc + src/vserverselect.cc + src/vconnect.cc + src/vepg.cc + src/vrecmove.cc + src/vradiorec.cc + src/vaudioselector.cc + src/vscreensaver.cc + src/vopts.cc + src/wselectlist.cc + src/wjpeg.cc + src/wsymbol.cc + src/wbutton.cc + src/wtextbox.cc + src/woptionpane.cc + src/woptionbox.cc + src/wremoteconfig.cc + src/wtabbar.cc + src/led.cc + src/inputman.cc + src/input.cc + src/inputudp.cc + src/inputlirc.cc + src/vpicturebanner.cc + src/eventdispatcher.cc + src/vdrrequestpacket.cc + src/vdrresponsepacket.cc + src/vvideolivetv.cc + src/sleeptimer.cc + src/wprogressbar.cc + src/bitmap.cc + src/dvbsubtitles.cc + src/tfeed.cc + src/vteletextview.cc + src/teletextdecodervbiebu.cc + src/teletxt/txtfont.cc + src/movieinfo.cc + src/seriesinfo.cc + src/wmovieview.cc + src/wseriesview.cc + src/wtvmedia.cc + src/wpictureview.cc + src/osdvector.cc + src/surfacevector.cc + src/buffer.cc + src/config.cc + src/log.cc + src/playervideorec.cc + src/playervideolive.cc + src/playerradiolive.cc + src/playerradiorec.cc + src/imageloader.cc + src/image.cc + src/telem.cc +) +# abstractoption.cc + +set (VOMP_OBJ_RASPBERRY + src/main.cc + src/threadp.cc + src/osdopenvg.cc + src/ledraspberry.cc + src/videoomx.cc + src/audioomx.cc + src/imageomx.cc + src/wjpegsimple.cc + src/inputlinux.cc + src/inputcec.cc + src/omx/omx.cc + src/omx/omximagedecode.cc + src/omx/omxeglrender.cc + src/imageomx2.cc +) + +# +#OBJ_WINDOWS = winmain.o threadwin.o inputwin.o ledwin.o videowin.o \ +# audiowin.o windowsosd.o dsallocator.o dssourcefilter.o dssourcepin.o \ +# wwinvideofilter.o wwinvideoh264filter.o wwinaudiofilter.o \ +# wwinmp3audiofilter.o wjpegsimple.o +# +#OBJ_WINLEGACY = osdwinpixel.o surfacewin.o \ +# fonts/helvB24.o fonts/helvB18.o +# +#OBJ_WINCURRENT = osdwinvector.o +# + +set (PNG_FILES + vdrhires.png + wallpaper720p.jpg + properties.png + radio.png + timers.png + tv.png + recordings.png + restart.png + hd1080i.png + hd720p.png + sd576i.png + txtoff.png + txton.png + dolbyoff.png + dolbyon.png + recording.png + recfolder.png + defposter.png +) + +project(vomp) +add_executable(vomp ${VOMP_OBJ_COMMON} ${VOMP_OBJ_RASPBERRY} pngs.o) + +# set(CMAKE_CXX_COMPILER_LAUNCHER "distcc") - not until cmake 3.17! + + + +if (${ENABLE_MOLD}) + target_link_options(vomp PRIVATE "-fuse-ld=${MOLD_BIN}") +endif() + +set(CMAKE_BUILD_TYPE Debug) +target_compile_options(vomp PRIVATE -O0) + +set_property(TARGET vomp PROPERTY CXX_STANDARD 14) + +find_path(INC_VC bcm_host.h PATHS /opt/vc/include) +find_path(INC_FT2 ft2build.h PATHS /usr/include/freetype2) +find_path(INC_MAGICK Magick++.h PATHS /usr/include/ImageMagick-6) +find_path(INC_MAGICK2 magick/magick-baseconfig.h PATHS /usr/include/arm-linux-gnueabihf/ImageMagick-6) + +target_include_directories(vomp SYSTEM PRIVATE ${INC_VC} ${INC_FT2} ${INC_MAGICK} ${INC_MAGICK2}) + +target_compile_options(vomp PRIVATE + -Werror=return-type + -Wall + -Wextra + -Wshadow + -Wmissing-declarations + -Winit-self + -Woverloaded-virtual + -Wmissing-format-attribute + -Wdisabled-optimization + -Wmissing-noreturn +) + +if (${ALL_WARNINGS}) + target_compile_options(vomp PRIVATE -Wold-style-cast -Wconversion) +endif() + +if (${FORCE_COLOR}) + target_compile_options(vomp PRIVATE -fdiagnostics-color=always) +endif() + +target_compile_options(vomp PRIVATE + -D_GNU_SOURCE -DIPV4 -DIPV6 -DVOMP_PLATFORM_RASPBERRY -DMAGICKCORE_HDRI_ENABLE=0 + -DMAGICKCORE_QUANTUM_DEPTH=16 -DDEV) + +target_link_libraries(vomp + pthread stdc++ rt brcmEGL brcmOpenVG openmaxil bcm_host avformat avcodec + fmt avutil swresample m dl fontconfig freetype Magick++-6.Q16 + MagickWand-6.Q16 MagickCore-6.Q16 jsoncpp) + +target_link_directories(vomp PRIVATE + ${CMAKE_SYSROOT}/opt/vc/lib + ${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf) + +add_custom_command( + OUTPUT pngs.o + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/res/images + COMMENT pngs.o + COMMAND ${CMAKE_LINKER} -r -b binary -o ${CMAKE_BINARY_DIR}/pngs.o ${PNG_FILES} +) diff --git a/CMakeToolChainRPiClang.txt b/CMakeToolChainRPiClang.txt new file mode 100644 index 0000000..733904e --- /dev/null +++ b/CMakeToolChainRPiClang.txt @@ -0,0 +1,19 @@ +set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_FIND_ROOT_PATH /pi-root) +set(CMAKE_SYSROOT /pi-root) + +# Clang +#set(CMAKE_C_COMPILER "/usr/bin/clang-11") +#set(CMAKE_CXX_COMPILER "/usr/bin/clang++-11") +set(CMAKE_C_COMPILER "${CMAKE_BINARY_DIR}/../compiler") +set(CMAKE_CXX_COMPILER "${CMAKE_BINARY_DIR}/../compiler") +set(CMAKE_LINKER /usr/bin/arm-linux-gnueabihf-ld) +set(CMAKE_C_FLAGS "-target arm-linux-gnueabihf -mfloat-abi=hard -mcpu=cortex-a7") +set(CMAKE_CXX_FLAGS "-target arm-linux-gnueabihf -mfloat-abi=hard -mcpu=cortex-a7") + + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/CMakeToolChainRPiGCC.txt b/CMakeToolChainRPiGCC.txt new file mode 100644 index 0000000..4a14672 --- /dev/null +++ b/CMakeToolChainRPiGCC.txt @@ -0,0 +1,17 @@ +set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_FIND_ROOT_PATH /pi-root) +set(CMAKE_SYSROOT /pi-root) + +# GCC +set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc) +set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++) +set(CMAKE_C_FLAGS "-Wno-psabi -mtune=cortex-a7 -mfloat-abi=hard -fopenmp") +set(CMAKE_CXX_FLAGS "-Wno-psabi -mtune=cortex-a7 -mfloat-abi=hard -fopenmp") + +# Pi1: -mtune=arm1176jzf-s Pi2: -mtune=cortex-a7 Pi3: -mtune=cortex-a53 + + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/README b/README index 95f53bb..2788436 100644 --- a/README +++ b/README @@ -1,4 +1,63 @@ -How to set up a build: +== Setup Build == -Copy compile-config.sample to compile-config +Create a top level directory, let's say vompdev + +Inside vompdev, clone the git repo: + +git clone https://git.vomp.tv/vompclient.git git + +Copy two sample files to the top level directory: + +cp git/cmake.config.sample cmake.config +cp git/compiler.sample compiler + +Edit the two new files to taste. + +== Build == + +In the top level directory: + +mkdir build +cd build +cmake -S ../git +make -j4 (concurrent procs to taste) + + +== Install == + +In the top level directory: + +Copy git/config.json.sample ./config.json + +Edit config.json to suit - this is a runtime config file for vomp. + +Copy build/vomp config.json to a Pi in the same directory. Run it. + +== Cross Compile == + +Get compiling working on a nice clean Raspbian 10 installation. +Copy the entire installation to a Debian 10 install at /pi-root + +In cmake.config, enable cross compiling. + +== Fastest Compilation == + +Use cross compiling on fast x64 hardware. +Setup distcc: https://www.distcc.org +In cmake.config set the cross compiler to clang. +Download / compile the mold linker. Enable in cmake.config. + +== Directory structure == + +After configuring things and doing a build your (much abbreviated) +directory stucture should look like this: + +/vompdev + git/ + .git/ + build/ + vomp + cmake.config + config.json + compiler diff --git a/all.sh b/all.sh deleted file mode 100755 index da7074d..0000000 --- a/all.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -./build.sh && ./install.sh && ./run.sh diff --git a/build.sh b/build.sh deleted file mode 100755 index cf5dfb8..0000000 --- a/build.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -source compile-config - -if [ ! -d "build" ]; then - - if [ $CROSS_COMPILE == "yes" ]; then - if [ $CROSS_COMPILER == "gcc" ]; then - CROSS_COMPILE_INSERT=-DCMAKE_TOOLCHAIN_FILE=../src/CMakeToolChainRPiGCC.txt - elif [ $CROSS_COMPILER == "clang" ]; then - CROSS_COMPILE_INSERT=-DCMAKE_TOOLCHAIN_FILE=../src/CMakeToolChainRPiClang.txt - fi - fi - - mkdir build - - cmake $CROSS_COMPILE_INSERT -DENABLE_MOLD=${ENABLE_MOLD} -DMOLD_BIN=${MOLD_BIN} \ - -DFORCE_COLOR=${FORCE_COLOR} -DALL_WARNINGS=${ALL_WARNINGS} -S src -B build - -fi - -make -C build -j$MAKE_J diff --git a/clean.sh b/clean.sh deleted file mode 100755 index bc9bfaa..0000000 --- a/clean.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -rm -rf build diff --git a/cmake.config.sample b/cmake.config.sample new file mode 100644 index 0000000..3fd4903 --- /dev/null +++ b/cmake.config.sample @@ -0,0 +1,15 @@ +# Enable cross-compiling +set(CONFIG_CROSS_COMPILE no) + +# Set cross compiler. Options: gcc clang +set(CONFIG_CROSS_COMPILER gcc) + +# Use mold for linker? (Only possible if compiler is clang) +set(CONFIG_ENABLE_MOLD no) +set(CONFIG_MOLD_BIN /opt/mold/bin/mold) + +# Force color output from compiler? remote distcc workers disable color by default +set(CONFIG_FORCE_COLOR no) + +# Add -Wold-style-cast and -Wconversion to compiler options +set(CONFIG_ALL_WARNINGS no) diff --git a/compile-config.sample b/compile-config.sample deleted file mode 100644 index 12c67fd..0000000 --- a/compile-config.sample +++ /dev/null @@ -1,18 +0,0 @@ -# Set the number of concurrent threads for compiling (make's -j option): -MAKE_J=1 - -# Enable cross-compiling -CROSS_COMPILE=no - -# Set cross compiler. Options: gcc clang -CROSS_COMPILER=gcc - -# Use mold for linker? (Only possible if compiler is clang) -ENABLE_MOLD=no -MOLD_BIN=/opt/mold/bin/mold - -# Force color output from compiler? remote distcc workers disable color by default -FORCE_COLOR=no - -# Add -Wold-style-cast and -Wconversion to compiler options -ALL_WARNINGS=no diff --git a/compiler b/compiler deleted file mode 100755 index afff73d..0000000 --- a/compiler +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -/usr/bin/distcc /usr/bin/clang-11 "$@" -#/usr/bin/clang-11 "$@" - diff --git a/compiler.sample b/compiler.sample new file mode 100755 index 0000000..50bc258 --- /dev/null +++ b/compiler.sample @@ -0,0 +1,7 @@ +#!/bin/bash + +# Enable one compiler + +/usr/bin/clang-11 "$@" +# /usr/bin/distcc /usr/bin/clang-11 "$@" + diff --git a/config.json.sample b/config.json.sample new file mode 100644 index 0000000..bba00fc --- /dev/null +++ b/config.json.sample @@ -0,0 +1,104 @@ +/* Vomp local config file + + Using a local config.json file is optional. + This file shows all config options and their defaults, + where applicable. + + To use a local config, create config.json and copy in just the + settings you want to change. Place the file in the current working + directory for vompclient. + + Command line options override config.json. +*/ + +{ + "main": + { + "daemonize": true, + "start_to_live_tv": 1 // Channel number + }, + + "log": + { + "enabled": false, + "filename": "stdout", + "level": "debug" + }, + + "server": + { + // "server" has no defaults + // Normally vompclient will use IPv4 UDP broadcasts and IPv6 multicast to find servers + // Entering an address and optionally a port will disable discovery + + "address": "vdrserver.example.com", + "port": 3024 + }, + + "server-discovery": + { + // If exactly two servers are found by auto server location and they have the same + // name and port but different IP versions, prefer which? + "prefer-ipv": 6 + }, + + "telemetry": + { + /* Enable / disable telemetry with define in telem.h */ + "target_ip": "192.0.2.1", + "target_port": 7777 + }, + + "input": + { + "mod_cec_enabled": true, + "mod_udp_enabled": true, + "mod_lirc_enabled": true + }, + + "input_udp": + { + "port": 2000 + }, + + "input_lirc": + { + // input_lirc has no defaults + + // Use these two options: + + "lirc_ip": "192.0.2.1", /* Numeric IPv4 or IPv6 */ + "lirc_port": 8765, /* except this, this has a default */ + + // Or this one: + + "lirc_socket": "/run/lirc/lircd", + + // + + // List all the Lirc remote names to listen to here: + + "remotes": [ "lirc-remote-name-1", "lirc-remote-name-2" ], + + // Now create a section here for each Lirc remote. Map each Lirc button to vomp keys. + + "lirc-remote-name-1": + { + /* List all keys to be used by Vomp + On the left - the Lirc key name. On the right - the Vomp key name. See input.h (for now) */ + + "KEY_POWER": "POWER", + "KEY_MUTE": "MUTE" + // etc. + }, + + "lirc-remote-name-2": + { + } + }, + + "videoomx": + { + "disable-hdmi-modechange": false + } +} diff --git a/install.sh b/install.sh deleted file mode 100755 index cb3823c..0000000 --- a/install.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -scp build/vomp config.json targetpi:/dev/shm diff --git a/res/fonts/helvB18-ISO8859-1.pcf b/res/fonts/helvB18-ISO8859-1.pcf new file mode 100644 index 0000000..ad032c3 Binary files /dev/null and b/res/fonts/helvB18-ISO8859-1.pcf differ diff --git a/res/fonts/helvB18.bdf b/res/fonts/helvB18.bdf new file mode 100644 index 0000000..9df3e60 --- /dev/null +++ b/res/fonts/helvB18.bdf @@ -0,0 +1,4034 @@ +STARTFONT 2.1 +FONT -Adobe-Helvetica-Bold-R-Normal--18-180-75-75-P-103-ISO8859-1 +SIZE 18 75 75 +FONTBOUNDINGBOX 18 23 -1 -5 + +STARTPROPERTIES 28 +FOUNDRY "Adobe" +FAMILY_NAME "Helvetica" +WEIGHT_NAME "Bold" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 18 +POINT_SIZE 180 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "P" +AVERAGE_WIDTH 103 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "1" +CAP_HEIGHT 14 +X_HEIGHT 10 +FACE_NAME "Helvetica Bold" +COPYRIGHT "Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved." +NOTICE "Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. " +_DEC_DEVICE_FONTNAMES "PS=Helvetica-Bold" +RELATIVE_SETWIDTH 50 +RELATIVE_WEIGHT 70 +FULL_NAME "Helvetica Bold" +WEIGHT 10 +QUAD_WIDTH 11 +DEFAULT_CHAR 0 +FONT_DESCENT 5 +FONT_ASCENT 16 +ENDPROPERTIES + +CHARS 192 + +STARTCHAR defaultchar +ENCODING 0 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 13 1 0 +BITMAP +AAA0 +0000 +8020 +0000 +8020 +0000 +8020 +0000 +8020 +0000 +8020 +0000 +AAA0 +ENDCHAR + +STARTCHAR space +ENCODING 32 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 1 1 0 0 +BITMAP +00 +ENDCHAR + +STARTCHAR exclam +ENCODING 33 +SWIDTH 333 0 +DWIDTH 5 0 +BBX 3 14 1 0 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +C0 +C0 +00 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 474 0 +DWIDTH 8 0 +BBX 5 5 2 9 +BITMAP +D8 +D8 +D8 +D8 +90 +ENDCHAR + +STARTCHAR numbersign +ENCODING 35 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 11 13 0 0 +BITMAP +0D80 +0D80 +0D80 +7FE0 +7FE0 +1B00 +1B00 +1B00 +FFC0 +FFC0 +3600 +3600 +3600 +ENDCHAR + +STARTCHAR dollar +ENCODING 36 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 16 0 -2 +BITMAP +0800 +3E00 +7F00 +EB80 +EB80 +E800 +7800 +3E00 +0F00 +0B80 +EB80 +EB80 +7F00 +3E00 +0800 +0800 +ENDCHAR + +STARTCHAR percent +ENCODING 37 +SWIDTH 889 0 +DWIDTH 16 0 +BBX 13 13 1 0 +BITMAP +7860 +FC60 +CCC0 +CC80 +FD80 +7B00 +0200 +06F0 +0DF8 +0998 +1998 +31F8 +30F0 +ENDCHAR + +STARTCHAR ampersand +ENCODING 38 +SWIDTH 722 0 +DWIDTH 14 0 +BBX 13 13 1 0 +BITMAP +3E00 +7F00 +6300 +7300 +3E00 +7C60 +EE60 +C7E0 +C3C0 +C1C0 +E3E0 +7F70 +3E78 +ENDCHAR + +STARTCHAR quotesingle +ENCODING 39 +SWIDTH 238 0 +DWIDTH 4 0 +BBX 2 5 1 9 +BITMAP +C0 +C0 +C0 +C0 +80 +ENDCHAR + +STARTCHAR parenleft +ENCODING 40 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 6 18 0 -4 +BITMAP +1C +38 +30 +70 +60 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +60 +70 +30 +38 +1C +ENDCHAR + +STARTCHAR parenright +ENCODING 41 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 6 18 1 -4 +BITMAP +E0 +70 +30 +38 +18 +1C +1C +1C +1C +1C +1C +1C +1C +18 +38 +30 +70 +E0 +ENDCHAR + +STARTCHAR asterisk +ENCODING 42 +SWIDTH 389 0 +DWIDTH 9 0 +BBX 7 6 1 8 +BITMAP +10 +D6 +7C +38 +6C +44 +ENDCHAR + +STARTCHAR plus +ENCODING 43 +SWIDTH 584 0 +DWIDTH 11 0 +BBX 9 8 1 1 +BITMAP +1C00 +1C00 +1C00 +FF80 +FF80 +1C00 +1C00 +1C00 +ENDCHAR + +STARTCHAR comma +ENCODING 44 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 3 5 1 -2 +BITMAP +E0 +E0 +E0 +60 +C0 +ENDCHAR + +STARTCHAR hyphen +ENCODING 45 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 5 3 1 4 +BITMAP +F8 +F8 +F8 +ENDCHAR + +STARTCHAR period +ENCODING 46 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 3 3 1 0 +BITMAP +E0 +E0 +E0 +ENDCHAR + +STARTCHAR slash +ENCODING 47 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 14 0 0 +BITMAP +18 +18 +18 +10 +30 +30 +30 +20 +60 +60 +40 +C0 +C0 +C0 +ENDCHAR + +STARTCHAR zero +ENCODING 48 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +1C00 +7F00 +7700 +E380 +E380 +E380 +E380 +E380 +E380 +E380 +7700 +7F00 +1C00 +ENDCHAR + +STARTCHAR one +ENCODING 49 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 6 13 1 0 +BITMAP +1C +3C +FC +FC +1C +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR + +STARTCHAR two +ENCODING 50 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +3E00 +7F00 +E380 +E380 +0380 +0700 +1F00 +3E00 +7800 +7000 +E000 +FF80 +FF80 +ENDCHAR + +STARTCHAR three +ENCODING 51 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +3E00 +7F00 +E700 +E300 +0700 +1E00 +1F00 +0780 +0380 +E380 +E780 +7F00 +3E00 +ENDCHAR + +STARTCHAR four +ENCODING 52 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +0700 +0F00 +1F00 +3F00 +3700 +7700 +6700 +E700 +FF80 +FF80 +0700 +0700 +0700 +ENDCHAR + +STARTCHAR five +ENCODING 53 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +FF00 +FF00 +E000 +E000 +FE00 +FF00 +E780 +0380 +0380 +E380 +E780 +FF00 +7E00 +ENDCHAR + +STARTCHAR six +ENCODING 54 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +3E00 +7F00 +7300 +E000 +E000 +EE00 +FF00 +F380 +E380 +E380 +F380 +7F00 +3E00 +ENDCHAR + +STARTCHAR seven +ENCODING 55 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +FF80 +FF80 +0380 +0700 +0E00 +0E00 +1C00 +1C00 +3800 +3800 +7000 +7000 +7000 +ENDCHAR + +STARTCHAR eight +ENCODING 56 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +3E00 +7F00 +E380 +E380 +E380 +7F00 +3E00 +7700 +E380 +E380 +E380 +7F00 +3E00 +ENDCHAR + +STARTCHAR nine +ENCODING 57 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +3E00 +7F00 +E700 +E380 +C380 +C380 +E780 +7F80 +3D80 +0380 +E700 +FF00 +7C00 +ENDCHAR + +STARTCHAR colon +ENCODING 58 +SWIDTH 333 0 +DWIDTH 6 0 +BBX 3 10 2 0 +BITMAP +E0 +E0 +E0 +00 +00 +00 +00 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR semicolon +ENCODING 59 +SWIDTH 333 0 +DWIDTH 6 0 +BBX 3 12 2 -2 +BITMAP +E0 +E0 +E0 +00 +00 +00 +00 +E0 +E0 +E0 +40 +80 +ENDCHAR + +STARTCHAR less +ENCODING 60 +SWIDTH 584 0 +DWIDTH 11 0 +BBX 9 9 1 0 +BITMAP +0380 +0F80 +3E00 +7800 +E000 +7800 +3E00 +0F80 +0380 +ENDCHAR + +STARTCHAR equal +ENCODING 61 +SWIDTH 584 0 +DWIDTH 10 0 +BBX 8 6 1 2 +BITMAP +FF +FF +00 +00 +FF +FF +ENDCHAR + +STARTCHAR greater +ENCODING 62 +SWIDTH 584 0 +DWIDTH 11 0 +BBX 9 9 1 0 +BITMAP +E000 +F800 +3E00 +0F00 +0380 +0F00 +3E00 +F800 +E000 +ENDCHAR + +STARTCHAR question +ENCODING 63 +SWIDTH 611 0 +DWIDTH 10 0 +BBX 8 14 1 0 +BITMAP +7E +FF +E7 +E7 +0E +1E +1C +38 +38 +38 +00 +38 +38 +38 +ENDCHAR + +STARTCHAR at +ENCODING 64 +SWIDTH 975 0 +DWIDTH 18 0 +BBX 16 17 1 -3 +BITMAP +07F0 +1FFC +3C1E +7006 +63B7 +E7F3 +C663 +CC63 +CCC3 +CCC6 +CCC6 +EFFC +E7B8 +7000 +3C00 +1FF0 +07F0 +ENDCHAR + +STARTCHAR A +ENCODING 65 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +0E00 +0E00 +1F00 +1F00 +1B00 +3B80 +3180 +3180 +71C0 +7FC0 +7FC0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR B +ENCODING 66 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +FE00 +FF80 +E3C0 +E1C0 +E1C0 +E380 +FF80 +FFC0 +E1E0 +E0E0 +E0E0 +E1E0 +FFC0 +FF00 +ENDCHAR + +STARTCHAR C +ENCODING 67 +SWIDTH 722 0 +DWIDTH 14 0 +BBX 12 14 1 0 +BITMAP +0F80 +3FE0 +78E0 +7070 +F070 +E000 +E000 +E000 +E000 +F070 +7070 +78E0 +3FE0 +0F80 +ENDCHAR + +STARTCHAR D +ENCODING 68 +SWIDTH 722 0 +DWIDTH 14 0 +BBX 12 14 1 0 +BITMAP +FF00 +FFC0 +E1E0 +E0E0 +E070 +E070 +E070 +E070 +E070 +E070 +E0E0 +E1E0 +FFC0 +FF00 +ENDCHAR + +STARTCHAR E +ENCODING 69 +SWIDTH 667 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +FFC0 +FFC0 +E000 +E000 +E000 +E000 +FF80 +FF80 +E000 +E000 +E000 +E000 +FFC0 +FFC0 +ENDCHAR + +STARTCHAR F +ENCODING 70 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +FFC0 +FFC0 +E000 +E000 +E000 +E000 +FF80 +FF80 +E000 +E000 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR G +ENCODING 71 +SWIDTH 778 0 +DWIDTH 14 0 +BBX 12 14 1 0 +BITMAP +0F80 +3FE0 +78E0 +7070 +E070 +E000 +E000 +E3F0 +E3F0 +E070 +7070 +78F0 +3FF0 +1FB0 +ENDCHAR + +STARTCHAR H +ENCODING 72 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +FFE0 +FFE0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR I +ENCODING 73 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 3 14 1 0 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR J +ENCODING 74 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 14 0 0 +BITMAP +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +E380 +E380 +F780 +7F00 +3E00 +ENDCHAR + +STARTCHAR K +ENCODING 75 +SWIDTH 722 0 +DWIDTH 14 0 +BBX 13 14 1 0 +BITMAP +E0F0 +E1E0 +E3C0 +E780 +EF00 +FE00 +FC00 +FE00 +EF00 +E780 +E3C0 +E1E0 +E0F0 +E078 +ENDCHAR + +STARTCHAR L +ENCODING 76 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 14 1 0 +BITMAP +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +FF80 +FF80 +ENDCHAR + +STARTCHAR M +ENCODING 77 +SWIDTH 833 0 +DWIDTH 16 0 +BBX 14 14 1 0 +BITMAP +E01C +E01C +F03C +F03C +F87C +F87C +F87C +ECDC +ECDC +ECDC +E79C +E79C +E31C +E31C +ENDCHAR + +STARTCHAR N +ENCODING 78 +SWIDTH 722 0 +DWIDTH 14 0 +BBX 12 14 1 0 +BITMAP +E070 +F070 +F070 +F870 +FC70 +EC70 +EE70 +E670 +E770 +E370 +E1F0 +E1F0 +E0F0 +E070 +ENDCHAR + +STARTCHAR O +ENCODING 79 +SWIDTH 778 0 +DWIDTH 16 0 +BBX 14 14 1 0 +BITMAP +0FC0 +3FF0 +7878 +7038 +F03C +E01C +E01C +E01C +E01C +F03C +7038 +7878 +3FF0 +0FC0 +ENDCHAR + +STARTCHAR P +ENCODING 80 +SWIDTH 667 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +FE00 +FF80 +E3C0 +E1C0 +E1C0 +E3C0 +FF80 +FE00 +E000 +E000 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR Q +ENCODING 81 +SWIDTH 778 0 +DWIDTH 16 0 +BBX 14 15 1 -1 +BITMAP +0FC0 +3FF0 +7878 +7038 +F03C +E01C +E01C +E01C +E01C +F19C +71D8 +78F8 +3FF0 +0FF8 +0018 +ENDCHAR + +STARTCHAR R +ENCODING 82 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +FF00 +FFC0 +E1E0 +E0E0 +E0E0 +E1E0 +FFC0 +FF80 +E1C0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR S +ENCODING 83 +SWIDTH 667 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +3F00 +7F80 +E3C0 +E1C0 +F000 +7C00 +3F00 +0F80 +03C0 +E1C0 +E1C0 +F3C0 +7F80 +3F00 +ENDCHAR + +STARTCHAR T +ENCODING 84 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 11 14 0 0 +BITMAP +FFE0 +FFE0 +0E00 +0E00 +0E00 +0E00 +0E00 +0E00 +0E00 +0E00 +0E00 +0E00 +0E00 +0E00 +ENDCHAR + +STARTCHAR U +ENCODING 85 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +71C0 +7FC0 +1F00 +ENDCHAR + +STARTCHAR V +ENCODING 86 +SWIDTH 667 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +E0E0 +E0E0 +E0E0 +71C0 +71C0 +71C0 +3180 +3B80 +3B80 +1B00 +1F00 +1F00 +0E00 +0E00 +ENDCHAR + +STARTCHAR W +ENCODING 87 +SWIDTH 944 0 +DWIDTH 17 0 +BBX 15 14 1 0 +BITMAP +E38E +E38E +E38E +E38E +739C +739C +739C +76DC +36D8 +36D8 +3EF8 +1C70 +1C70 +1C70 +ENDCHAR + +STARTCHAR X +ENCODING 88 +SWIDTH 667 0 +DWIDTH 12 0 +BBX 12 14 0 0 +BITMAP +E070 +E070 +70E0 +79E0 +1980 +1F80 +0F00 +1F80 +1980 +39C0 +70E0 +70E0 +E070 +E070 +ENDCHAR + +STARTCHAR Y +ENCODING 89 +SWIDTH 667 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +E0E0 +E0E0 +E0E0 +71C0 +71C0 +3B80 +3B80 +1F00 +0E00 +0E00 +0E00 +0E00 +0E00 +0E00 +ENDCHAR + +STARTCHAR Z +ENCODING 90 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 10 14 1 0 +BITMAP +FFC0 +FFC0 +01C0 +0380 +0700 +0700 +0E00 +1C00 +3800 +3800 +7000 +E000 +FFC0 +FFC0 +ENDCHAR + +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 333 0 +DWIDTH 6 0 +BBX 5 18 1 -4 +BITMAP +F8 +F8 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +F8 +F8 +ENDCHAR + +STARTCHAR backslash +ENCODING 92 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 14 0 0 +BITMAP +C0 +C0 +C0 +40 +60 +60 +60 +20 +30 +30 +10 +18 +18 +18 +ENDCHAR + +STARTCHAR bracketright +ENCODING 93 +SWIDTH 333 0 +DWIDTH 6 0 +BBX 5 18 0 -4 +BITMAP +F8 +F8 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +F8 +F8 +ENDCHAR + +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 584 0 +DWIDTH 10 0 +BBX 10 6 0 7 +BITMAP +0C00 +1E00 +3F00 +7380 +E1C0 +C0C0 +ENDCHAR + +STARTCHAR underscore +ENCODING 95 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 10 2 0 -4 +BITMAP +FFC0 +FFC0 +ENDCHAR + +STARTCHAR grave +ENCODING 96 +SWIDTH 333 0 +DWIDTH 5 0 +BBX 5 3 0 11 +BITMAP +E0 +70 +38 +ENDCHAR + +STARTCHAR a +ENCODING 97 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 10 1 0 +BITMAP +7C +FE +E7 +0F +3F +77 +E7 +E7 +FF +77 +ENDCHAR + +STARTCHAR b +ENCODING 98 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +E000 +E000 +E000 +E000 +EF00 +FF80 +F380 +E1C0 +E1C0 +E1C0 +E1C0 +F380 +FF80 +EF00 +ENDCHAR + +STARTCHAR c +ENCODING 99 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 10 1 0 +BITMAP +1E00 +7F80 +7380 +E000 +E000 +E000 +E000 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR d +ENCODING 100 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +01C0 +01C0 +01C0 +01C0 +3DC0 +7FC0 +73C0 +E1C0 +E1C0 +E1C0 +E1C0 +73C0 +7FC0 +3DC0 +ENDCHAR + +STARTCHAR e +ENCODING 101 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 9 10 1 0 +BITMAP +1E00 +7F00 +7380 +E180 +FF80 +FF80 +E000 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR f +ENCODING 102 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 7 14 0 0 +BITMAP +1E +3E +38 +38 +FE +FE +38 +38 +38 +38 +38 +38 +38 +38 +ENDCHAR + +STARTCHAR g +ENCODING 103 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 -4 +BITMAP +3DC0 +7FC0 +73C0 +E1C0 +E1C0 +E1C0 +E1C0 +73C0 +7FC0 +3DC0 +01C0 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR h +ENCODING 104 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 14 1 0 +BITMAP +E000 +E000 +E000 +E000 +EF00 +FF80 +F380 +E380 +E380 +E380 +E380 +E380 +E380 +E380 +ENDCHAR + +STARTCHAR i +ENCODING 105 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 3 14 1 0 +BITMAP +E0 +E0 +00 +00 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR j +ENCODING 106 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 18 -1 -4 +BITMAP +38 +38 +00 +00 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +F8 +F0 +ENDCHAR + +STARTCHAR k +ENCODING 107 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 14 1 0 +BITMAP +E000 +E000 +E000 +E000 +E700 +EE00 +FC00 +F800 +F800 +FC00 +EE00 +E700 +E780 +E380 +ENDCHAR + +STARTCHAR l +ENCODING 108 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 3 14 1 0 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR m +ENCODING 109 +SWIDTH 889 0 +DWIDTH 15 0 +BBX 13 10 1 0 +BITMAP +EE70 +FFF8 +F7B8 +E738 +E738 +E738 +E738 +E738 +E738 +E738 +ENDCHAR + +STARTCHAR n +ENCODING 110 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 10 1 0 +BITMAP +EF00 +FF80 +F380 +E380 +E380 +E380 +E380 +E380 +E380 +E380 +ENDCHAR + +STARTCHAR o +ENCODING 111 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 10 1 0 +BITMAP +1E00 +7F80 +7380 +E1C0 +E1C0 +E1C0 +E1C0 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR p +ENCODING 112 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 -4 +BITMAP +EF00 +FF80 +F380 +E1C0 +E1C0 +E1C0 +E1C0 +F380 +FF80 +EF00 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR q +ENCODING 113 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 -4 +BITMAP +3DC0 +7FC0 +73C0 +E1C0 +E1C0 +E1C0 +E1C0 +73C0 +7FC0 +3DC0 +01C0 +01C0 +01C0 +01C0 +ENDCHAR + +STARTCHAR r +ENCODING 114 +SWIDTH 389 0 +DWIDTH 7 0 +BBX 6 10 1 0 +BITMAP +EC +FC +FC +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR s +ENCODING 115 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 10 1 0 +BITMAP +1E +7F +E7 +E0 +FE +3F +07 +E7 +FE +78 +ENDCHAR + +STARTCHAR t +ENCODING 116 +SWIDTH 333 0 +DWIDTH 6 0 +BBX 6 13 0 0 +BITMAP +70 +70 +70 +FC +FC +70 +70 +70 +70 +70 +70 +7C +3C +ENDCHAR + +STARTCHAR u +ENCODING 117 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 10 1 0 +BITMAP +E380 +E380 +E380 +E380 +E380 +E380 +E380 +E780 +FF80 +7B80 +ENDCHAR + +STARTCHAR v +ENCODING 118 +SWIDTH 556 0 +DWIDTH 9 0 +BBX 9 10 0 0 +BITMAP +E380 +E380 +E380 +7700 +7700 +7700 +3E00 +3E00 +1C00 +1C00 +ENDCHAR + +STARTCHAR w +ENCODING 119 +SWIDTH 778 0 +DWIDTH 13 0 +BBX 13 10 0 0 +BITMAP +E738 +E738 +E738 +6730 +7770 +7570 +3DE0 +3DE0 +18C0 +18C0 +ENDCHAR + +STARTCHAR x +ENCODING 120 +SWIDTH 556 0 +DWIDTH 9 0 +BBX 9 10 0 0 +BITMAP +E380 +E380 +7700 +3E00 +1C00 +3E00 +7700 +7700 +E380 +E380 +ENDCHAR + +STARTCHAR y +ENCODING 121 +SWIDTH 556 0 +DWIDTH 9 0 +BBX 9 14 0 -4 +BITMAP +E380 +E380 +E380 +7700 +7700 +7700 +3E00 +3E00 +1C00 +1C00 +1C00 +1800 +7800 +7000 +ENDCHAR + +STARTCHAR z +ENCODING 122 +SWIDTH 500 0 +DWIDTH 10 0 +BBX 8 10 1 0 +BITMAP +FF +FF +07 +0E +1C +38 +70 +E0 +FF +FF +ENDCHAR + +STARTCHAR braceleft +ENCODING 123 +SWIDTH 389 0 +DWIDTH 8 0 +BBX 7 18 1 -4 +BITMAP +0E +1C +38 +38 +38 +38 +38 +70 +E0 +70 +38 +38 +38 +38 +38 +38 +1C +0E +ENDCHAR + +STARTCHAR bar +ENCODING 124 +SWIDTH 280 0 +DWIDTH 5 0 +BBX 2 18 1 -4 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR + +STARTCHAR braceright +ENCODING 125 +SWIDTH 389 0 +DWIDTH 8 0 +BBX 7 18 0 -4 +BITMAP +E0 +70 +38 +38 +38 +38 +38 +1C +0E +1C +38 +38 +38 +38 +38 +38 +70 +E0 +ENDCHAR + +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 584 0 +DWIDTH 11 0 +BBX 9 3 1 4 +BITMAP +7980 +FF80 +CF00 +ENDCHAR + +STARTCHAR space +ENCODING 160 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 1 1 0 0 +BITMAP +00 +ENDCHAR + +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 333 0 +DWIDTH 6 0 +BBX 3 14 2 -4 +BITMAP +E0 +E0 +00 +00 +60 +60 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR cent +ENCODING 162 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 14 1 -2 +BITMAP +02 +02 +3E +7F +E7 +C8 +C8 +D0 +D0 +E3 +7F +7E +40 +40 +ENDCHAR + +STARTCHAR sterling +ENCODING 163 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 10 13 0 0 +BITMAP +1F00 +3FC0 +71C0 +7000 +7000 +3800 +7F00 +1C00 +1C00 +3800 +70C0 +FFC0 +EF80 +ENDCHAR + +STARTCHAR currency +ENCODING 164 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 9 8 1 2 +BITMAP +C180 +FF80 +7700 +6300 +6300 +7700 +FF80 +C180 +ENDCHAR + +STARTCHAR yen +ENCODING 165 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 13 0 0 +BITMAP +E380 +E380 +E380 +7700 +7700 +3E00 +FF80 +1C00 +FF80 +1C00 +1C00 +1C00 +1C00 +ENDCHAR + +STARTCHAR brokenbar +ENCODING 166 +SWIDTH 280 0 +DWIDTH 5 0 +BBX 2 17 1 -3 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +00 +00 +00 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR + +STARTCHAR section +ENCODING 167 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 18 1 -4 +BITMAP +3C +7E +C7 +C7 +E0 +78 +FC +C6 +C7 +E3 +73 +3F +0E +07 +E3 +E3 +7E +3C +ENDCHAR + +STARTCHAR dieresis +ENCODING 168 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 5 2 1 11 +BITMAP +D8 +D8 +ENDCHAR + +STARTCHAR copyright +ENCODING 169 +SWIDTH 737 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +38E0 +6030 +6730 +CD98 +D818 +9808 +D818 +CD98 +6730 +6030 +38E0 +0F80 +ENDCHAR + +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 370 0 +DWIDTH 8 0 +BBX 6 9 1 5 +BITMAP +78 +8C +7C +CC +CC +74 +00 +FC +FC +ENDCHAR + +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 10 8 0 1 +BITMAP +1DC0 +3B80 +7700 +EE00 +EE00 +7700 +3B80 +1DC0 +ENDCHAR + +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 584 0 +DWIDTH 11 0 +BBX 9 5 1 2 +BITMAP +FF80 +FF80 +0180 +0180 +0180 +ENDCHAR + +STARTCHAR hyphen +ENCODING 173 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 5 3 1 4 +BITMAP +F8 +F8 +F8 +ENDCHAR + +STARTCHAR registered +ENCODING 174 +SWIDTH 737 0 +DWIDTH 15 0 +BBX 13 13 1 0 +BITMAP +0F80 +38E0 +6030 +6F90 +CCD8 +CCD8 +8F08 +CD98 +CD98 +6CF0 +6030 +38E0 +0F80 +ENDCHAR + +STARTCHAR macron +ENCODING 175 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 5 2 1 12 +BITMAP +F8 +F8 +ENDCHAR + +STARTCHAR degree +ENCODING 176 +SWIDTH 400 0 +DWIDTH 7 0 +BBX 6 6 0 7 +BITMAP +78 +FC +CC +CC +FC +78 +ENDCHAR + +STARTCHAR plusminus +ENCODING 177 +SWIDTH 584 0 +DWIDTH 11 0 +BBX 9 9 1 0 +BITMAP +1C00 +1C00 +FF80 +FF80 +1C00 +1C00 +0000 +FF80 +FF80 +ENDCHAR + +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 333 0 +DWIDTH 6 0 +BBX 6 8 0 5 +BITMAP +78 +FC +CC +1C +78 +E0 +FC +FC +ENDCHAR + +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 333 0 +DWIDTH 6 0 +BBX 6 8 0 5 +BITMAP +78 +FC +CC +38 +3C +CC +FC +78 +ENDCHAR + +STARTCHAR acute +ENCODING 180 +SWIDTH 333 0 +DWIDTH 5 0 +BBX 5 3 0 11 +BITMAP +38 +70 +E0 +ENDCHAR + +STARTCHAR mu +ENCODING 181 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 14 1 -4 +BITMAP +E380 +E380 +E380 +E380 +E380 +E380 +E380 +E780 +FF80 +FB80 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR paragraph +ENCODING 182 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 18 0 -4 +BITMAP +3F80 +7B00 +FB00 +FB00 +FB00 +FB00 +FB00 +7B00 +3B00 +1B00 +1B00 +1B00 +1B00 +1B00 +1B00 +1B00 +1B00 +1B00 +ENDCHAR + +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 278 0 +DWIDTH 4 0 +BBX 2 2 1 4 +BITMAP +C0 +C0 +ENDCHAR + +STARTCHAR cedilla +ENCODING 184 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 5 5 1 -5 +BITMAP +60 +70 +18 +F8 +F0 +ENDCHAR + +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 333 0 +DWIDTH 6 0 +BBX 4 8 0 5 +BITMAP +30 +F0 +F0 +30 +30 +30 +30 +30 +ENDCHAR + +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 365 0 +DWIDTH 8 0 +BBX 6 9 1 5 +BITMAP +78 +CC +CC +CC +CC +78 +00 +FC +FC +ENDCHAR + +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 10 8 0 1 +BITMAP +EE00 +7700 +3B80 +1DC0 +1DC0 +3B80 +7700 +EE00 +ENDCHAR + +STARTCHAR onequarter +ENCODING 188 +SWIDTH 834 0 +DWIDTH 15 0 +BBX 14 13 0 0 +BITMAP +3060 +F060 +F0C0 +30C0 +3180 +3198 +3338 +3638 +0678 +0CD8 +0CFC +1818 +1818 +ENDCHAR + +STARTCHAR onehalf +ENCODING 189 +SWIDTH 834 0 +DWIDTH 15 0 +BBX 15 13 0 0 +BITMAP +3060 +F060 +F0C0 +30C0 +3180 +31BC +337E +3666 +060E +0C3C +0C70 +187E +187E +ENDCHAR + +STARTCHAR threequarters +ENCODING 190 +SWIDTH 834 0 +DWIDTH 15 0 +BBX 14 13 0 0 +BITMAP +7830 +FC30 +CC60 +3860 +3CC0 +CCD8 +FDB8 +7B38 +0378 +06D8 +06FC +0C18 +0C18 +ENDCHAR + +STARTCHAR questiondown +ENCODING 191 +SWIDTH 611 0 +DWIDTH 10 0 +BBX 8 14 1 -4 +BITMAP +1C +1C +00 +00 +1C +1C +1C +38 +78 +70 +E7 +E7 +FF +7E +ENDCHAR + +STARTCHAR Agrave +ENCODING 192 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 18 1 0 +BITMAP +3800 +1C00 +0E00 +0000 +0E00 +0E00 +1F00 +1F00 +1B00 +3B80 +3180 +3180 +71C0 +7FC0 +7FC0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR Aacute +ENCODING 193 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 18 1 0 +BITMAP +0380 +0700 +0E00 +0000 +0E00 +0E00 +1F00 +1F00 +1B00 +3B80 +3180 +3180 +71C0 +7FC0 +7FC0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 18 1 0 +BITMAP +0E00 +1F00 +3B80 +0000 +0E00 +0E00 +1F00 +1F00 +1B00 +3B80 +3180 +3180 +71C0 +7FC0 +7FC0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR Atilde +ENCODING 195 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 18 1 0 +BITMAP +1D80 +3F80 +3700 +0000 +0E00 +0E00 +1F00 +1F00 +1B00 +3B80 +3180 +3180 +71C0 +7FC0 +7FC0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 17 1 0 +BITMAP +1980 +1980 +0000 +0E00 +0E00 +1F00 +1F00 +1B00 +3B80 +3180 +3180 +71C0 +7FC0 +7FC0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR Aring +ENCODING 197 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 17 1 0 +BITMAP +0E00 +1B00 +1B00 +0E00 +0E00 +1F00 +1F00 +1B00 +3B80 +3180 +3180 +71C0 +7FC0 +7FC0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR AE +ENCODING 198 +SWIDTH 1000 0 +DWIDTH 18 0 +BBX 16 14 1 0 +BITMAP +0FFF +0FFF +1F80 +1B80 +3B80 +3B80 +33FE +73FE +7380 +7F80 +FF80 +E380 +E3FF +E3FF +ENDCHAR + +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 722 0 +DWIDTH 14 0 +BBX 12 19 1 -5 +BITMAP +0F80 +3FE0 +78E0 +7070 +F070 +E000 +E000 +E000 +E000 +F070 +7070 +78E0 +3FE0 +0F80 +0C00 +0E00 +0300 +1F00 +1E00 +ENDCHAR + +STARTCHAR Egrave +ENCODING 200 +SWIDTH 667 0 +DWIDTH 12 0 +BBX 10 18 1 0 +BITMAP +3800 +1C00 +0E00 +0000 +FFC0 +FFC0 +E000 +E000 +E000 +E000 +FF80 +FF80 +E000 +E000 +E000 +E000 +FFC0 +FFC0 +ENDCHAR + +STARTCHAR Eacute +ENCODING 201 +SWIDTH 667 0 +DWIDTH 12 0 +BBX 10 18 1 0 +BITMAP +0380 +0700 +0E00 +0000 +FFC0 +FFC0 +E000 +E000 +E000 +E000 +FF80 +FF80 +E000 +E000 +E000 +E000 +FFC0 +FFC0 +ENDCHAR + +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 667 0 +DWIDTH 12 0 +BBX 10 18 1 0 +BITMAP +0E00 +1F00 +3B80 +0000 +FFC0 +FFC0 +E000 +E000 +E000 +E000 +FF80 +FF80 +E000 +E000 +E000 +E000 +FFC0 +FFC0 +ENDCHAR + +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 667 0 +DWIDTH 12 0 +BBX 10 17 1 0 +BITMAP +3300 +3300 +0000 +FFC0 +FFC0 +E000 +E000 +E000 +E000 +FF80 +FF80 +E000 +E000 +E000 +E000 +FFC0 +FFC0 +ENDCHAR + +STARTCHAR Igrave +ENCODING 204 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 18 -1 0 +BITMAP +E0 +70 +38 +00 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +ENDCHAR + +STARTCHAR Iacute +ENCODING 205 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 18 1 0 +BITMAP +38 +70 +E0 +00 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 18 0 0 +BITMAP +20 +70 +D8 +00 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +ENDCHAR + +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 17 0 0 +BITMAP +D8 +D8 +00 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +ENDCHAR + +STARTCHAR Eth +ENCODING 208 +SWIDTH 722 0 +DWIDTH 14 0 +BBX 13 14 0 0 +BITMAP +7F80 +7FE0 +70F0 +7070 +7038 +7038 +FE38 +FE38 +7038 +7038 +7070 +70F0 +7FE0 +7F80 +ENDCHAR + +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 722 0 +DWIDTH 14 0 +BBX 12 18 1 0 +BITMAP +0EC0 +1FC0 +1B80 +0000 +E070 +F070 +F070 +F870 +FC70 +EC70 +EE70 +E670 +E770 +E370 +E1F0 +E1F0 +E0F0 +E070 +ENDCHAR + +STARTCHAR Ograve +ENCODING 210 +SWIDTH 778 0 +DWIDTH 16 0 +BBX 14 18 1 0 +BITMAP +0E00 +0700 +0380 +0000 +0FC0 +3FF0 +7878 +7038 +F03C +E01C +E01C +E01C +E01C +F03C +7038 +7878 +3FF0 +0FC0 +ENDCHAR + +STARTCHAR Oacute +ENCODING 211 +SWIDTH 778 0 +DWIDTH 16 0 +BBX 14 18 1 0 +BITMAP +00E0 +01C0 +0380 +0000 +0FC0 +3FF0 +7878 +7038 +F03C +E01C +E01C +E01C +E01C +F03C +7038 +7878 +3FF0 +0FC0 +ENDCHAR + +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 778 0 +DWIDTH 16 0 +BBX 14 18 1 0 +BITMAP +0380 +07C0 +0EE0 +0000 +0FC0 +3FF0 +7878 +7038 +F03C +E01C +E01C +E01C +E01C +F03C +7038 +7878 +3FF0 +0FC0 +ENDCHAR + +STARTCHAR Otilde +ENCODING 213 +SWIDTH 778 0 +DWIDTH 16 0 +BBX 14 18 1 0 +BITMAP +0760 +0FE0 +0DC0 +0000 +0FC0 +3FF0 +7878 +7038 +F03C +E01C +E01C +E01C +E01C +F03C +7038 +7878 +3FF0 +0FC0 +ENDCHAR + +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 778 0 +DWIDTH 16 0 +BBX 14 17 1 0 +BITMAP +0CC0 +0CC0 +0000 +0FC0 +3FF0 +7878 +7038 +F03C +E01C +E01C +E01C +E01C +F03C +7038 +7878 +3FF0 +0FC0 +ENDCHAR + +STARTCHAR multiply +ENCODING 215 +SWIDTH 584 0 +DWIDTH 11 0 +BBX 10 8 0 1 +BITMAP +E1C0 +7380 +3F00 +1E00 +1E00 +3F00 +7380 +E1C0 +ENDCHAR + +STARTCHAR Oslash +ENCODING 216 +SWIDTH 778 0 +DWIDTH 16 0 +BBX 15 14 0 0 +BITMAP +07EE +1FFC +3C38 +387C +78EE +71CE +738E +770E +7E0E +7C1E +381C +7C3C +EFF8 +C7E0 +ENDCHAR + +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 18 1 0 +BITMAP +3800 +1C00 +0E00 +0000 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +71C0 +7FC0 +1F00 +ENDCHAR + +STARTCHAR Uacute +ENCODING 218 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 18 1 0 +BITMAP +0380 +0700 +0E00 +0000 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +71C0 +7FC0 +1F00 +ENDCHAR + +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 18 1 0 +BITMAP +0E00 +1F00 +3B80 +0000 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +71C0 +7FC0 +1F00 +ENDCHAR + +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 722 0 +DWIDTH 13 0 +BBX 11 17 1 0 +BITMAP +1980 +1980 +0000 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +71C0 +7FC0 +1F00 +ENDCHAR + +STARTCHAR Yacute +ENCODING 221 +SWIDTH 667 0 +DWIDTH 13 0 +BBX 11 18 1 0 +BITMAP +0380 +0700 +0E00 +0000 +E0E0 +E0E0 +E0E0 +71C0 +71C0 +3B80 +3B80 +1F00 +0E00 +0E00 +0E00 +0E00 +0E00 +0E00 +ENDCHAR + +STARTCHAR Thorn +ENCODING 222 +SWIDTH 667 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +E000 +E000 +E000 +FE00 +FF80 +E3C0 +E1C0 +E1C0 +E3C0 +FF80 +FE00 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR germandbls +ENCODING 223 +SWIDTH 611 0 +DWIDTH 10 0 +BBX 8 14 1 0 +BITMAP +3C +7E +E7 +E7 +E7 +E7 +EE +EE +E7 +E7 +E7 +E7 +EF +EE +ENDCHAR + +STARTCHAR agrave +ENCODING 224 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 14 1 0 +BITMAP +70 +38 +1C +00 +7C +FE +E7 +0F +3F +77 +E7 +E7 +FF +77 +ENDCHAR + +STARTCHAR aacute +ENCODING 225 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 14 1 0 +BITMAP +0E +1C +38 +00 +7C +FE +E7 +0F +3F +77 +E7 +E7 +FF +77 +ENDCHAR + +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 14 1 0 +BITMAP +1C +3E +77 +00 +7C +FE +E7 +0F +3F +77 +E7 +E7 +FF +77 +ENDCHAR + +STARTCHAR atilde +ENCODING 227 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 14 1 0 +BITMAP +3B +7F +6E +00 +7C +FE +E7 +0F +3F +77 +E7 +E7 +FF +77 +ENDCHAR + +STARTCHAR adieresis +ENCODING 228 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 13 1 0 +BITMAP +36 +36 +00 +7C +FE +E7 +0F +3F +77 +E7 +E7 +FF +77 +ENDCHAR + +STARTCHAR aring +ENCODING 229 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 8 14 1 0 +BITMAP +1C +36 +36 +1C +7C +FE +E7 +0F +3F +77 +E7 +E7 +FF +77 +ENDCHAR + +STARTCHAR ae +ENCODING 230 +SWIDTH 889 0 +DWIDTH 16 0 +BBX 14 10 1 0 +BITMAP +7CF0 +FFF8 +E71C +0F1C +3FFC +7700 +E700 +EF9C +FFFC +79F0 +ENDCHAR + +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 556 0 +DWIDTH 10 0 +BBX 9 15 1 -5 +BITMAP +1E00 +7F80 +7380 +E000 +E000 +E000 +E000 +7380 +7F80 +1E00 +1800 +1C00 +0600 +3E00 +3C00 +ENDCHAR + +STARTCHAR egrave +ENCODING 232 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 9 14 1 0 +BITMAP +3800 +1C00 +0E00 +0000 +1E00 +7F00 +7380 +E180 +FF80 +FF80 +E000 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR eacute +ENCODING 233 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 9 14 1 0 +BITMAP +0700 +0E00 +1C00 +0000 +1E00 +7F00 +7380 +E180 +FF80 +FF80 +E000 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 9 14 1 0 +BITMAP +0E00 +1F00 +3B80 +0000 +1E00 +7F00 +7380 +E180 +FF80 +FF80 +E000 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR edieresis +ENCODING 235 +SWIDTH 556 0 +DWIDTH 11 0 +BBX 9 13 1 0 +BITMAP +3300 +3300 +0000 +1E00 +7F00 +7380 +E180 +FF80 +FF80 +E000 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR igrave +ENCODING 236 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 14 0 0 +BITMAP +E0 +70 +38 +00 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +ENDCHAR + +STARTCHAR iacute +ENCODING 237 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 14 0 0 +BITMAP +38 +70 +E0 +00 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +ENDCHAR + +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 7 14 -1 0 +BITMAP +38 +7C +EE +00 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +ENDCHAR + +STARTCHAR idieresis +ENCODING 239 +SWIDTH 278 0 +DWIDTH 5 0 +BBX 5 13 0 0 +BITMAP +D8 +D8 +00 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +ENDCHAR + +STARTCHAR eth +ENCODING 240 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +7000 +1F00 +7C00 +0600 +1F00 +7F80 +7380 +E1C0 +E1C0 +E1C0 +E1C0 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR ntilde +ENCODING 241 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 14 1 0 +BITMAP +3B00 +7F00 +6E00 +0000 +EF00 +FF80 +F380 +E380 +E380 +E380 +E380 +E380 +E380 +E380 +ENDCHAR + +STARTCHAR ograve +ENCODING 242 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +3800 +1C00 +0E00 +0000 +1E00 +7F80 +7380 +E1C0 +E1C0 +E1C0 +E1C0 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR oacute +ENCODING 243 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +0700 +0E00 +1C00 +0000 +1E00 +7F80 +7380 +E1C0 +E1C0 +E1C0 +E1C0 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +0E00 +1F00 +3B80 +0000 +1E00 +7F80 +7380 +E1C0 +E1C0 +E1C0 +E1C0 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR otilde +ENCODING 245 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 14 1 0 +BITMAP +1D80 +3F80 +3700 +0000 +1E00 +7F80 +7380 +E1C0 +E1C0 +E1C0 +E1C0 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR odieresis +ENCODING 246 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 13 1 0 +BITMAP +3300 +3300 +0000 +1E00 +7F80 +7380 +E1C0 +E1C0 +E1C0 +E1C0 +7380 +7F80 +1E00 +ENDCHAR + +STARTCHAR divide +ENCODING 247 +SWIDTH 584 0 +DWIDTH 11 0 +BBX 9 8 1 1 +BITMAP +1C00 +1C00 +0000 +FF80 +FF80 +0000 +1C00 +1C00 +ENDCHAR + +STARTCHAR oslash +ENCODING 248 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 12 10 0 0 +BITMAP +0F30 +3FE0 +38C0 +71E0 +77E0 +7EE0 +78E0 +31C0 +7FC0 +CF00 +ENDCHAR + +STARTCHAR ugrave +ENCODING 249 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 14 1 0 +BITMAP +7000 +3800 +1C00 +0000 +E380 +E380 +E380 +E380 +E380 +E380 +E380 +E780 +FF80 +7B80 +ENDCHAR + +STARTCHAR uacute +ENCODING 250 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 14 1 0 +BITMAP +0700 +0E00 +1C00 +0000 +E380 +E380 +E380 +E380 +E380 +E380 +E380 +E780 +FF80 +7B80 +ENDCHAR + +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 14 1 0 +BITMAP +1C00 +3E00 +7700 +0000 +E380 +E380 +E380 +E380 +E380 +E380 +E380 +E780 +FF80 +7B80 +ENDCHAR + +STARTCHAR udieresis +ENCODING 252 +SWIDTH 611 0 +DWIDTH 11 0 +BBX 9 13 1 0 +BITMAP +3600 +3600 +0000 +E380 +E380 +E380 +E380 +E380 +E380 +E380 +E780 +FF80 +7B80 +ENDCHAR + +STARTCHAR yacute +ENCODING 253 +SWIDTH 556 0 +DWIDTH 9 0 +BBX 9 18 0 -4 +BITMAP +0700 +0E00 +1C00 +0000 +E380 +E380 +E380 +7700 +7700 +7700 +3E00 +3E00 +1C00 +1C00 +1C00 +1800 +7800 +7000 +ENDCHAR + +STARTCHAR thorn +ENCODING 254 +SWIDTH 611 0 +DWIDTH 12 0 +BBX 10 18 1 -4 +BITMAP +E000 +E000 +E000 +E000 +EF00 +FF80 +F380 +E1C0 +E1C0 +E1C0 +E1C0 +F380 +FF80 +EF00 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 556 0 +DWIDTH 9 0 +BBX 9 17 0 -4 +BITMAP +3600 +3600 +0000 +E380 +E380 +E380 +7700 +7700 +7700 +3E00 +3E00 +1C00 +1C00 +1C00 +1800 +7800 +7000 +ENDCHAR + +ENDFONT diff --git a/res/fonts/helvB18.cc b/res/fonts/helvB18.cc new file mode 100644 index 0000000..5b82fa7 Binary files /dev/null and b/res/fonts/helvB18.cc differ diff --git a/res/fonts/helvB24-ISO8859-1.pcf b/res/fonts/helvB24-ISO8859-1.pcf new file mode 100644 index 0000000..6309e1e Binary files /dev/null and b/res/fonts/helvB24-ISO8859-1.pcf differ diff --git a/res/fonts/helvB24.bdf b/res/fonts/helvB24.bdf new file mode 100644 index 0000000..971b857 --- /dev/null +++ b/res/fonts/helvB24.bdf @@ -0,0 +1,4889 @@ +STARTFONT 2.1 +FONT -Adobe-Helvetica-Bold-R-Normal--24-240-75-75-P-138-ISO8859-1 +SIZE 24 75 75 +FONTBOUNDINGBOX 24 29 -1 -5 + +STARTPROPERTIES 28 +FOUNDRY "Adobe" +FAMILY_NAME "Helvetica" +WEIGHT_NAME "Bold" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 24 +POINT_SIZE 240 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "P" +AVERAGE_WIDTH 138 +CHARSET_REGISTRY "ISO8859" +CHARSET_ENCODING "1" +CAP_HEIGHT 19 +X_HEIGHT 14 +FACE_NAME "Helvetica Bold" +COPYRIGHT "Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved." +NOTICE "Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. " +_DEC_DEVICE_FONTNAMES "PS=Helvetica-Bold" +RELATIVE_SETWIDTH 50 +RELATIVE_WEIGHT 70 +FULL_NAME "Helvetica Bold" +WEIGHT 10 +QUAD_WIDTH 15 +DEFAULT_CHAR 0 +FONT_DESCENT 5 +FONT_ASCENT 22 +ENDPROPERTIES + +CHARS 192 + +STARTCHAR defaultchar +ENCODING 0 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 15 19 2 0 +BITMAP +AAAA +0000 +8002 +0000 +8002 +0000 +8002 +0000 +8002 +0000 +8002 +0000 +8002 +0000 +8002 +0000 +8002 +0000 +AAAA +ENDCHAR + +STARTCHAR space +ENCODING 32 +SWIDTH 278 0 +DWIDTH 6 0 +BBX 1 1 0 0 +BITMAP +00 +ENDCHAR + +STARTCHAR exclam +ENCODING 33 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 3 19 2 0 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +00 +00 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 474 0 +DWIDTH 9 0 +BBX 5 6 2 13 +BITMAP +D8 +D8 +D8 +D8 +D8 +90 +ENDCHAR + +STARTCHAR numbersign +ENCODING 35 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 18 0 0 +BITMAP +0CC0 +0CC0 +0CC0 +0CC0 +0CC0 +7FF0 +7FF0 +1980 +1980 +1980 +1980 +FFE0 +FFE0 +3300 +3300 +3300 +3300 +3300 +ENDCHAR + +STARTCHAR dollar +ENCODING 36 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 21 0 -2 +BITMAP +0600 +3F80 +7FC0 +F6E0 +E6E0 +E6E0 +F600 +7E00 +3E00 +0F00 +07C0 +07E0 +06F0 +E670 +E670 +E670 +F6F0 +7FE0 +1FC0 +0600 +0600 +ENDCHAR + +STARTCHAR percent +ENCODING 37 +SWIDTH 889 0 +DWIDTH 22 0 +BBX 21 18 0 0 +BITMAP +000700 +3E0700 +7F0E00 +E38E00 +C19C00 +C19C00 +E3B800 +7F3800 +3E7000 +007000 +00E3E0 +00E7F0 +01CE38 +01CC18 +038C18 +038E38 +0707F0 +0703E0 +ENDCHAR + +STARTCHAR ampersand +ENCODING 38 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 18 1 0 +BITMAP +0F80 +1FC0 +3DE0 +38E0 +38E0 +38E0 +1DC0 +0F80 +1F00 +3F9C +7BDC +71FC +E0F8 +E070 +E0F8 +F1FC +7FCE +1F87 +ENDCHAR + +STARTCHAR quotesingle +ENCODING 39 +SWIDTH 238 0 +DWIDTH 6 0 +BBX 2 6 2 13 +BITMAP +C0 +C0 +C0 +C0 +C0 +80 +ENDCHAR + +STARTCHAR parenleft +ENCODING 40 +SWIDTH 333 0 +DWIDTH 8 0 +BBX 6 24 1 -5 +BITMAP +0C +1C +38 +38 +70 +70 +60 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +60 +70 +70 +38 +38 +1C +0C +ENDCHAR + +STARTCHAR parenright +ENCODING 41 +SWIDTH 333 0 +DWIDTH 8 0 +BBX 6 24 1 -5 +BITMAP +C0 +E0 +70 +70 +38 +38 +18 +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +18 +38 +38 +70 +70 +E0 +C0 +ENDCHAR + +STARTCHAR asterisk +ENCODING 42 +SWIDTH 389 0 +DWIDTH 10 0 +BBX 8 7 1 12 +BITMAP +18 +18 +DB +FF +3C +66 +66 +ENDCHAR + +STARTCHAR plus +ENCODING 43 +SWIDTH 584 0 +DWIDTH 15 0 +BBX 11 12 2 1 +BITMAP +0E00 +0E00 +0E00 +0E00 +0E00 +FFE0 +FFE0 +0E00 +0E00 +0E00 +0E00 +0E00 +ENDCHAR + +STARTCHAR comma +ENCODING 44 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 3 6 2 -3 +BITMAP +E0 +E0 +E0 +60 +60 +C0 +ENDCHAR + +STARTCHAR hyphen +ENCODING 45 +SWIDTH 333 0 +DWIDTH 8 0 +BBX 7 3 0 6 +BITMAP +FE +FE +FE +ENDCHAR + +STARTCHAR period +ENCODING 46 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 3 3 2 0 +BITMAP +E0 +E0 +E0 +ENDCHAR + +STARTCHAR slash +ENCODING 47 +SWIDTH 278 0 +DWIDTH 8 0 +BBX 8 19 0 0 +BITMAP +07 +07 +06 +06 +0E +0C +0C +1C +1C +18 +18 +38 +30 +30 +70 +60 +60 +E0 +E0 +ENDCHAR + +STARTCHAR zero +ENCODING 48 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 18 0 0 +BITMAP +1F80 +3FC0 +79E0 +70E0 +70E0 +E070 +E070 +E070 +E070 +E070 +E070 +E070 +E070 +70E0 +70E0 +79E0 +3FC0 +1F80 +ENDCHAR + +STARTCHAR one +ENCODING 49 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 7 18 2 0 +BITMAP +0E +0E +1E +FE +FE +0E +0E +0E +0E +0E +0E +0E +0E +0E +0E +0E +0E +0E +ENDCHAR + +STARTCHAR two +ENCODING 50 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 18 0 0 +BITMAP +1F00 +7FC0 +71E0 +E0E0 +E070 +E070 +0070 +00E0 +01E0 +03C0 +0780 +1F00 +3C00 +7800 +F000 +E000 +FFF0 +FFF0 +ENDCHAR + +STARTCHAR three +ENCODING 51 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 18 0 0 +BITMAP +1F00 +7FC0 +71C0 +E0E0 +E0E0 +E0E0 +00E0 +01C0 +0F80 +0FE0 +00E0 +0070 +0070 +E070 +E0F0 +71E0 +7FE0 +1F80 +ENDCHAR + +STARTCHAR four +ENCODING 52 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 18 0 0 +BITMAP +01C0 +03C0 +03C0 +07C0 +07C0 +0DC0 +1DC0 +19C0 +31C0 +71C0 +61C0 +E1C0 +FFF0 +FFF0 +01C0 +01C0 +01C0 +01C0 +ENDCHAR + +STARTCHAR five +ENCODING 53 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 18 0 0 +BITMAP +7FE0 +7FE0 +7000 +7000 +7000 +7000 +7F80 +7FC0 +71E0 +00E0 +0070 +0070 +0070 +E070 +E0F0 +F1E0 +7FC0 +1F80 +ENDCHAR + +STARTCHAR six +ENCODING 54 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 18 0 0 +BITMAP +0F80 +3FE0 +78E0 +7070 +E070 +E000 +E000 +EF00 +FFC0 +F9E0 +F0E0 +E070 +E070 +E070 +70E0 +79E0 +3FC0 +1F80 +ENDCHAR + +STARTCHAR seven +ENCODING 55 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 18 0 0 +BITMAP +FFF0 +FFF0 +00F0 +00E0 +01C0 +01C0 +0380 +0380 +0700 +0700 +0E00 +0E00 +1E00 +1C00 +1C00 +3C00 +3800 +3800 +ENDCHAR + +STARTCHAR eight +ENCODING 56 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 18 0 0 +BITMAP +0F00 +3FC0 +39C0 +70E0 +70E0 +70E0 +70E0 +39C0 +1F80 +3FC0 +70E0 +E070 +E070 +E070 +E070 +70E0 +7FE0 +1F80 +ENDCHAR + +STARTCHAR nine +ENCODING 57 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 12 18 0 0 +BITMAP +1F80 +7FC0 +79E0 +F0E0 +E070 +E070 +E070 +E070 +F0F0 +79F0 +7FF0 +1F70 +0070 +0070 +E0E0 +F3E0 +7FC0 +1F00 +ENDCHAR + +STARTCHAR colon +ENCODING 58 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 3 14 2 0 +BITMAP +E0 +E0 +E0 +00 +00 +00 +00 +00 +00 +00 +00 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR semicolon +ENCODING 59 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 3 17 2 -3 +BITMAP +E0 +E0 +E0 +00 +00 +00 +00 +00 +00 +00 +00 +E0 +E0 +E0 +60 +60 +C0 +ENDCHAR + +STARTCHAR less +ENCODING 60 +SWIDTH 584 0 +DWIDTH 15 0 +BBX 13 12 0 1 +BITMAP +0038 +00F8 +03E0 +0F80 +3E00 +F000 +F000 +3E00 +0F80 +03E0 +00F8 +0038 +ENDCHAR + +STARTCHAR equal +ENCODING 61 +SWIDTH 584 0 +DWIDTH 14 0 +BBX 10 6 2 4 +BITMAP +FFC0 +FFC0 +0000 +0000 +FFC0 +FFC0 +ENDCHAR + +STARTCHAR greater +ENCODING 62 +SWIDTH 584 0 +DWIDTH 14 0 +BBX 13 12 0 1 +BITMAP +E000 +F800 +3E00 +0F80 +03E0 +0078 +0078 +03E0 +0F80 +3E00 +F800 +E000 +ENDCHAR + +STARTCHAR question +ENCODING 63 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 19 2 0 +BITMAP +1F80 +7FC0 +79E0 +F0E0 +E0E0 +E1E0 +01C0 +03C0 +0780 +0700 +0E00 +0E00 +0E00 +0E00 +0000 +0000 +0E00 +0E00 +0E00 +ENDCHAR + +STARTCHAR at +ENCODING 64 +SWIDTH 975 0 +DWIDTH 24 0 +BBX 22 22 1 -4 +BITMAP +01FF00 +07FFC0 +0F81F0 +1E0078 +3C0038 +787D9C +70FF9C +F1C71C +E3871C +E30E1C +E70E38 +E70C38 +E71C70 +E71C70 +E39DE0 +F3FFC0 +71F700 +780000 +3C0000 +1F0700 +0FFF00 +03FC00 +ENDCHAR + +STARTCHAR A +ENCODING 65 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 19 1 0 +BITMAP +03C0 +03C0 +07E0 +07E0 +0E60 +0E70 +0E70 +1C38 +1C38 +1C38 +381C +381C +3FFC +7FFE +700E +700E +E007 +E007 +E007 +ENDCHAR + +STARTCHAR B +ENCODING 66 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 15 19 2 0 +BITMAP +FFE0 +FFF8 +E078 +E01C +E01C +E01C +E01C +E038 +FFF0 +FFF8 +E01C +E00E +E00E +E00E +E00E +E01E +E07C +FFF8 +FFE0 +ENDCHAR + +STARTCHAR C +ENCODING 67 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 19 1 0 +BITMAP +07F0 +1FFC +3E3E +780F +7007 +F000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +F007 +7007 +780F +3E3E +1FFC +07F0 +ENDCHAR + +STARTCHAR D +ENCODING 68 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 16 19 2 0 +BITMAP +FFE0 +FFF8 +E07C +E01E +E00E +E00F +E007 +E007 +E007 +E007 +E007 +E007 +E007 +E00F +E00E +E01E +E07C +FFF8 +FFE0 +ENDCHAR + +STARTCHAR E +ENCODING 69 +SWIDTH 667 0 +DWIDTH 16 0 +BBX 13 19 2 0 +BITMAP +FFF0 +FFF0 +E000 +E000 +E000 +E000 +E000 +E000 +FFE0 +FFE0 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +FFF8 +FFF8 +ENDCHAR + +STARTCHAR F +ENCODING 70 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 12 19 2 0 +BITMAP +FFF0 +FFF0 +E000 +E000 +E000 +E000 +E000 +E000 +FFE0 +FFE0 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR G +ENCODING 71 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 17 19 1 0 +BITMAP +07F000 +1FFC00 +3E3E00 +780F00 +700700 +F00000 +E00000 +E00000 +E00000 +E07F80 +E07F80 +E00380 +E00380 +F00380 +700780 +780F80 +3E3F80 +1FFB80 +07F180 +ENDCHAR + +STARTCHAR H +ENCODING 72 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 15 19 2 0 +BITMAP +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +FFFE +FFFE +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +ENDCHAR + +STARTCHAR I +ENCODING 73 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 3 19 2 0 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR J +ENCODING 74 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 11 19 1 0 +BITMAP +00E0 +00E0 +00E0 +00E0 +00E0 +00E0 +00E0 +00E0 +00E0 +00E0 +00E0 +00E0 +E0E0 +E0E0 +E0E0 +E0E0 +71E0 +7FC0 +3F80 +ENDCHAR + +STARTCHAR K +ENCODING 75 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 19 2 0 +BITMAP +E03C +E078 +E0F0 +E1E0 +E3C0 +E780 +EF00 +FE00 +FE00 +FF00 +F780 +E3C0 +E1E0 +E0F0 +E078 +E03C +E01E +E00F +E007 +ENDCHAR + +STARTCHAR L +ENCODING 76 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 12 19 2 0 +BITMAP +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +FFF0 +FFF0 +ENDCHAR + +STARTCHAR M +ENCODING 77 +SWIDTH 833 0 +DWIDTH 23 0 +BBX 19 19 2 0 +BITMAP +E000E0 +F001E0 +F001E0 +F803E0 +F803E0 +FC07E0 +EC06E0 +EE0EE0 +E60CE0 +E71CE0 +E71CE0 +E318E0 +E3B8E0 +E3B8E0 +E1F0E0 +E1F0E0 +E0E0E0 +E0E0E0 +E0E0E0 +ENDCHAR + +STARTCHAR N +ENCODING 78 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 15 19 2 0 +BITMAP +E00E +F00E +F00E +F80E +F80E +FC0E +EE0E +EE0E +E70E +E38E +E38E +E1CE +E0CE +E0EE +E07E +E03E +E03E +E01E +E00E +ENDCHAR + +STARTCHAR O +ENCODING 79 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 17 19 1 0 +BITMAP +07F000 +1FFC00 +3E3E00 +780F00 +700700 +F00780 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +F00780 +700700 +780F00 +3E3E00 +1FFC00 +07F000 +ENDCHAR + +STARTCHAR P +ENCODING 80 +SWIDTH 667 0 +DWIDTH 17 0 +BBX 14 19 2 0 +BITMAP +FFE0 +FFF8 +E038 +E01C +E01C +E01C +E01C +E038 +FFF8 +FFF0 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR Q +ENCODING 81 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 17 19 1 0 +BITMAP +07F000 +1FFC00 +3E3E00 +780F00 +700700 +F00780 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +F00780 +70F700 +787F00 +3E1E00 +1FFF00 +07F780 +ENDCHAR + +STARTCHAR R +ENCODING 82 +SWIDTH 722 0 +DWIDTH 17 0 +BBX 14 19 2 0 +BITMAP +FFE0 +FFF8 +E038 +E01C +E01C +E01C +E01C +E038 +FFF8 +FFF0 +E078 +E038 +E01C +E01C +E01C +E01C +E01C +E01C +E01C +ENDCHAR + +STARTCHAR S +ENCODING 83 +SWIDTH 667 0 +DWIDTH 17 0 +BBX 15 19 1 0 +BITMAP +07E0 +1FF8 +3C7C +781C +701C +7000 +7800 +3E00 +1FE0 +03F8 +007C +001E +000E +E00E +E00E +F01E +7C7C +3FF8 +0FE0 +ENDCHAR + +STARTCHAR T +ENCODING 84 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 15 19 0 0 +BITMAP +FFFE +FFFE +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +ENDCHAR + +STARTCHAR U +ENCODING 85 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 15 19 2 0 +BITMAP +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +F01E +701C +7C7C +3FF8 +0FE0 +ENDCHAR + +STARTCHAR V +ENCODING 86 +SWIDTH 667 0 +DWIDTH 18 0 +BBX 16 19 1 0 +BITMAP +E007 +E007 +F00F +700E +781E +381C +381C +3C3C +1C38 +1C38 +1E78 +0E70 +0E70 +0E70 +07E0 +07E0 +03C0 +03C0 +03C0 +ENDCHAR + +STARTCHAR W +ENCODING 87 +SWIDTH 944 0 +DWIDTH 23 0 +BBX 21 19 1 0 +BITMAP +E07038 +E07038 +E07038 +E07038 +70F870 +70F870 +70D870 +71DC70 +31DC60 +39DCE0 +398CE0 +3B8EE0 +1B8EC0 +1B8EC0 +1F07C0 +1F07C0 +0E0380 +0E0380 +0E0380 +ENDCHAR + +STARTCHAR X +ENCODING 88 +SWIDTH 667 0 +DWIDTH 18 0 +BBX 16 19 1 0 +BITMAP +E007 +F00F +781E +381C +1C38 +0E70 +0FF0 +07E0 +03C0 +03C0 +07E0 +0FF0 +0E70 +1C38 +3C3C +381C +700E +F00F +E007 +ENDCHAR + +STARTCHAR Y +ENCODING 89 +SWIDTH 667 0 +DWIDTH 17 0 +BBX 15 19 1 0 +BITMAP +E00E +F01E +701C +783C +3838 +3C78 +1C70 +1EF0 +0EE0 +0FE0 +07C0 +07C0 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +ENDCHAR + +STARTCHAR Z +ENCODING 90 +SWIDTH 611 0 +DWIDTH 16 0 +BBX 14 19 1 0 +BITMAP +FFFC +FFFC +003C +0078 +00F0 +01E0 +01E0 +03C0 +0780 +0780 +0F00 +1E00 +1E00 +3C00 +3800 +7800 +F000 +FFFC +FFFC +ENDCHAR + +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 333 0 +DWIDTH 8 0 +BBX 5 24 1 -5 +BITMAP +F8 +F8 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +F8 +F8 +ENDCHAR + +STARTCHAR backslash +ENCODING 92 +SWIDTH 278 0 +DWIDTH 8 0 +BBX 8 19 0 0 +BITMAP +E0 +E0 +60 +60 +70 +30 +30 +38 +38 +18 +18 +1C +0C +0C +0E +06 +06 +07 +07 +ENDCHAR + +STARTCHAR bracketright +ENCODING 93 +SWIDTH 333 0 +DWIDTH 8 0 +BBX 5 24 2 -5 +BITMAP +F8 +F8 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +F8 +F8 +ENDCHAR + +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 584 0 +DWIDTH 14 0 +BBX 11 9 1 10 +BITMAP +0E00 +0E00 +1F00 +1B00 +3B80 +71C0 +71C0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR underscore +ENCODING 95 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 14 2 0 -5 +BITMAP +FFFC +FFFC +ENDCHAR + +STARTCHAR grave +ENCODING 96 +SWIDTH 333 0 +DWIDTH 8 0 +BBX 6 4 1 15 +BITMAP +E0 +70 +38 +1C +ENDCHAR + +STARTCHAR a +ENCODING 97 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 14 1 0 +BITMAP +1F80 +3FC0 +71E0 +70E0 +00E0 +07E0 +3FE0 +7CE0 +F0E0 +E0E0 +E1E0 +F3E0 +7FF0 +3E70 +ENDCHAR + +STARTCHAR b +ENCODING 98 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 12 19 2 0 +BITMAP +E000 +E000 +E000 +E000 +E000 +EF80 +FFC0 +F9E0 +F0E0 +E070 +E070 +E070 +E070 +E070 +E070 +F0E0 +F9E0 +FFC0 +EF80 +ENDCHAR + +STARTCHAR c +ENCODING 99 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +1F80 +3FC0 +79E0 +70E0 +E000 +E000 +E000 +E000 +E000 +E000 +70E0 +79E0 +3FC0 +1F80 +ENDCHAR + +STARTCHAR d +ENCODING 100 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 12 19 1 0 +BITMAP +0070 +0070 +0070 +0070 +0070 +1F70 +3FF0 +79F0 +70F0 +E070 +E070 +E070 +E070 +E070 +E070 +70F0 +79F0 +3FF0 +1F70 +ENDCHAR + +STARTCHAR e +ENCODING 101 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 14 1 0 +BITMAP +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +FFF0 +FFF0 +E000 +E000 +7070 +78F0 +3FE0 +0F80 +ENDCHAR + +STARTCHAR f +ENCODING 102 +SWIDTH 333 0 +DWIDTH 9 0 +BBX 7 19 1 0 +BITMAP +1E +3E +38 +38 +38 +FE +FE +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +ENDCHAR + +STARTCHAR g +ENCODING 103 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 12 19 1 -5 +BITMAP +1F70 +3FF0 +79F0 +70F0 +E070 +E070 +E070 +E070 +E070 +E070 +70F0 +79F0 +3FF0 +1F70 +0070 +E070 +F0E0 +7FE0 +1F80 +ENDCHAR + +STARTCHAR h +ENCODING 104 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 19 2 0 +BITMAP +E000 +E000 +E000 +E000 +E000 +EF00 +FFC0 +F1C0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR i +ENCODING 105 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 3 19 2 0 +BITMAP +E0 +E0 +E0 +00 +00 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR j +ENCODING 106 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 5 24 0 -5 +BITMAP +38 +38 +38 +00 +00 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +F8 +F0 +ENDCHAR + +STARTCHAR k +ENCODING 107 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 19 2 0 +BITMAP +E000 +E000 +E000 +E000 +E000 +E1E0 +E3C0 +E780 +EF00 +FE00 +FC00 +FE00 +EF00 +E700 +E780 +E3C0 +E1C0 +E1E0 +E0F0 +ENDCHAR + +STARTCHAR l +ENCODING 108 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 3 19 2 0 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR m +ENCODING 109 +SWIDTH 889 0 +DWIDTH 21 0 +BBX 17 14 2 0 +BITMAP +EF3E00 +FFFF00 +F3E780 +E1C380 +E1C380 +E1C380 +E1C380 +E1C380 +E1C380 +E1C380 +E1C380 +E1C380 +E1C380 +E1C380 +ENDCHAR + +STARTCHAR n +ENCODING 110 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 14 2 0 +BITMAP +EF80 +FFC0 +F1C0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR o +ENCODING 111 +SWIDTH 611 0 +DWIDTH 14 0 +BBX 12 14 1 0 +BITMAP +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +E070 +E070 +E070 +E070 +70E0 +79E0 +3FC0 +0F00 +ENDCHAR + +STARTCHAR p +ENCODING 112 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 12 19 2 -5 +BITMAP +EF80 +FFC0 +F9E0 +F0E0 +E070 +E070 +E070 +E070 +E070 +E070 +F0E0 +F9E0 +FFC0 +EF80 +E000 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR q +ENCODING 113 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 12 19 1 -5 +BITMAP +1F70 +3FF0 +79F0 +70F0 +E070 +E070 +E070 +E070 +E070 +E070 +70F0 +79F0 +3FF0 +1F70 +0070 +0070 +0070 +0070 +0070 +ENDCHAR + +STARTCHAR r +ENCODING 114 +SWIDTH 389 0 +DWIDTH 10 0 +BBX 7 14 2 0 +BITMAP +E6 +EE +FE +F0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR s +ENCODING 115 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +3F00 +7F80 +F3C0 +E1C0 +E000 +FC00 +7F80 +0FC0 +01E0 +E0E0 +E0E0 +F1E0 +7FC0 +3F80 +ENDCHAR + +STARTCHAR t +ENCODING 116 +SWIDTH 333 0 +DWIDTH 9 0 +BBX 7 18 1 0 +BITMAP +38 +38 +38 +38 +FE +FE +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +3E +1E +ENDCHAR + +STARTCHAR u +ENCODING 117 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 14 2 0 +BITMAP +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E1E0 +73E0 +7EE0 +1CE0 +ENDCHAR + +STARTCHAR v +ENCODING 118 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 14 1 0 +BITMAP +E070 +E070 +E070 +70E0 +70E0 +70E0 +39C0 +39C0 +39C0 +1F80 +1F80 +0F00 +0F00 +0F00 +ENDCHAR + +STARTCHAR w +ENCODING 119 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 19 14 0 0 +BITMAP +E0E0E0 +E0E0E0 +60E0C0 +71F1C0 +71F1C0 +31B180 +33B980 +3BBB80 +1B1B00 +1F1F00 +1F1F00 +0E0E00 +0E0E00 +0E0E00 +ENDCHAR + +STARTCHAR x +ENCODING 120 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +E0E0 +F1E0 +71C0 +3B80 +3F80 +1F00 +0E00 +1F00 +1F00 +3B80 +7BC0 +71C0 +F1E0 +E0E0 +ENDCHAR + +STARTCHAR y +ENCODING 121 +SWIDTH 556 0 +DWIDTH 15 0 +BBX 13 19 1 -5 +BITMAP +E038 +E038 +7038 +7870 +3870 +3CF0 +1CE0 +1CE0 +0FC0 +0FC0 +07C0 +0780 +0380 +0380 +0700 +0700 +0E00 +3E00 +3C00 +ENDCHAR + +STARTCHAR z +ENCODING 122 +SWIDTH 500 0 +DWIDTH 13 0 +BBX 11 14 1 0 +BITMAP +FFE0 +FFE0 +01C0 +0380 +0780 +0F00 +0E00 +1E00 +3C00 +3800 +7000 +F000 +FFE0 +FFE0 +ENDCHAR + +STARTCHAR braceleft +ENCODING 123 +SWIDTH 389 0 +DWIDTH 10 0 +BBX 7 24 1 -5 +BITMAP +0E +1C +38 +38 +38 +38 +38 +38 +38 +38 +70 +E0 +E0 +70 +38 +38 +38 +38 +38 +38 +38 +38 +1C +0E +ENDCHAR + +STARTCHAR bar +ENCODING 124 +SWIDTH 280 0 +DWIDTH 7 0 +BBX 3 24 2 -5 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR braceright +ENCODING 125 +SWIDTH 389 0 +DWIDTH 10 0 +BBX 7 24 2 -5 +BITMAP +E0 +70 +38 +38 +38 +38 +38 +38 +38 +38 +1C +0E +0E +1C +38 +38 +38 +38 +38 +38 +38 +38 +70 +E0 +ENDCHAR + +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 584 0 +DWIDTH 14 0 +BBX 11 4 1 5 +BITMAP +78E0 +FEE0 +EFE0 +E3C0 +ENDCHAR + +STARTCHAR space +ENCODING 160 +SWIDTH 278 0 +DWIDTH 6 0 +BBX 1 1 0 0 +BITMAP +00 +ENDCHAR + +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 3 19 2 -5 +BITMAP +E0 +E0 +E0 +00 +00 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR cent +ENCODING 162 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 11 18 1 -2 +BITMAP +0180 +0180 +1F80 +3FC0 +7BE0 +7360 +E300 +E600 +E600 +E600 +E600 +EC00 +ECE0 +7DE0 +7FC0 +3F80 +1800 +1800 +ENDCHAR + +STARTCHAR sterling +ENCODING 163 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 13 18 0 0 +BITMAP +1F80 +3FC0 +70E0 +70E0 +7000 +7800 +3800 +1C00 +FFC0 +FFC0 +1C00 +1C00 +1C00 +3800 +3800 +7738 +FFF8 +F9F0 +ENDCHAR + +STARTCHAR currency +ENCODING 164 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 12 1 3 +BITMAP +C030 +EF70 +7FE0 +39C0 +70E0 +70E0 +70E0 +70E0 +39C0 +7FE0 +EF70 +C030 +ENDCHAR + +STARTCHAR yen +ENCODING 165 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 13 18 0 0 +BITMAP +E038 +E038 +7070 +7070 +38E0 +38E0 +1DC0 +1DC0 +7FF0 +7FF0 +0700 +7FF0 +7FF0 +0700 +0700 +0700 +0700 +0700 +ENDCHAR + +STARTCHAR brokenbar +ENCODING 166 +SWIDTH 280 0 +DWIDTH 7 0 +BBX 3 23 2 -4 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +00 +00 +00 +00 +00 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR section +ENCODING 167 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 24 1 -5 +BITMAP +1F80 +3FC0 +79E0 +70E0 +78E0 +3C00 +1E00 +7F00 +F780 +E3C0 +E1E0 +E0E0 +7070 +7870 +3C70 +1EE0 +0FC0 +0780 +03C0 +71E0 +70E0 +79E0 +3FC0 +1F80 +ENDCHAR + +STARTCHAR dieresis +ENCODING 168 +SWIDTH 333 0 +DWIDTH 9 0 +BBX 7 2 1 16 +BITMAP +EE +EE +ENDCHAR + +STARTCHAR copyright +ENCODING 169 +SWIDTH 737 0 +DWIDTH 19 0 +BBX 17 17 1 0 +BITMAP +07F000 +1E3C00 +380E00 +700700 +63E300 +E73380 +CE3180 +CE0180 +CE0180 +CE0180 +CE3180 +E73180 +63E300 +700700 +380E00 +1E3C00 +07F000 +ENDCHAR + +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 370 0 +DWIDTH 10 0 +BBX 8 12 1 7 +BITMAP +7C +FE +C6 +1E +7E +E6 +C6 +FF +7B +00 +FF +FF +ENDCHAR + +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 10 8 1 3 +BITMAP +1DC0 +3B80 +7700 +EE00 +EE00 +7700 +3B80 +1DC0 +ENDCHAR + +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 584 0 +DWIDTH 15 0 +BBX 12 7 1 4 +BITMAP +FFF0 +FFF0 +0030 +0030 +0030 +0030 +0030 +ENDCHAR + +STARTCHAR hyphen +ENCODING 173 +SWIDTH 333 0 +DWIDTH 8 0 +BBX 7 3 0 6 +BITMAP +FE +FE +FE +ENDCHAR + +STARTCHAR registered +ENCODING 174 +SWIDTH 737 0 +DWIDTH 19 0 +BBX 17 17 1 0 +BITMAP +07F000 +1E3C00 +380E00 +700700 +67E300 +E63380 +C63180 +C63180 +C7E180 +C6C180 +C66180 +E63180 +661B00 +700700 +380E00 +1E3C00 +07F000 +ENDCHAR + +STARTCHAR macron +ENCODING 175 +SWIDTH 333 0 +DWIDTH 9 0 +BBX 7 2 1 17 +BITMAP +FE +FE +ENDCHAR + +STARTCHAR degree +ENCODING 176 +SWIDTH 400 0 +DWIDTH 9 0 +BBX 8 7 0 11 +BITMAP +3C +66 +C3 +C3 +C3 +66 +3C +ENDCHAR + +STARTCHAR plusminus +ENCODING 177 +SWIDTH 584 0 +DWIDTH 15 0 +BBX 11 13 2 0 +BITMAP +0E00 +0E00 +0E00 +0E00 +FFE0 +FFE0 +0E00 +0E00 +0E00 +0E00 +0000 +FFE0 +FFE0 +ENDCHAR + +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 6 10 0 8 +BITMAP +78 +FC +CC +0C +1C +78 +E0 +C0 +FC +FC +ENDCHAR + +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 6 10 0 8 +BITMAP +78 +FC +CC +0C +38 +38 +0C +CC +FC +78 +ENDCHAR + +STARTCHAR acute +ENCODING 180 +SWIDTH 333 0 +DWIDTH 8 0 +BBX 6 4 1 15 +BITMAP +1C +38 +70 +E0 +ENDCHAR + +STARTCHAR mu +ENCODING 181 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 19 2 -5 +BITMAP +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E1E0 +F3E0 +FEE0 +ECE0 +E000 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR paragraph +ENCODING 182 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 11 24 1 -5 +BITMAP +0FE0 +3FE0 +7CC0 +7CC0 +FCC0 +FCC0 +FCC0 +FCC0 +FCC0 +7CC0 +7CC0 +3CC0 +1CC0 +0CC0 +0CC0 +0CC0 +0CC0 +0CC0 +0CC0 +0CC0 +0CC0 +0CC0 +0CC0 +0CC0 +ENDCHAR + +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 3 3 2 6 +BITMAP +E0 +E0 +E0 +ENDCHAR + +STARTCHAR cedilla +ENCODING 184 +SWIDTH 333 0 +DWIDTH 8 0 +BBX 6 6 1 -5 +BITMAP +70 +78 +1C +1C +FC +78 +ENDCHAR + +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 333 0 +DWIDTH 7 0 +BBX 4 10 0 8 +BITMAP +30 +30 +F0 +F0 +30 +30 +30 +30 +30 +30 +ENDCHAR + +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 365 0 +DWIDTH 10 0 +BBX 8 12 1 7 +BITMAP +3C +7E +E7 +C3 +C3 +C3 +E7 +7E +3C +00 +FF +FF +ENDCHAR + +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 10 8 1 3 +BITMAP +EE00 +7700 +3B80 +1DC0 +1DC0 +3B80 +7700 +EE00 +ENDCHAR + +STARTCHAR onequarter +ENCODING 188 +SWIDTH 834 0 +DWIDTH 19 0 +BBX 17 18 1 0 +BITMAP +301800 +301800 +F03000 +F03000 +306000 +306000 +30C000 +30C000 +318600 +318E00 +031E00 +031E00 +063600 +066600 +0C7F80 +0C7F80 +180600 +180600 +ENDCHAR + +STARTCHAR onehalf +ENCODING 189 +SWIDTH 834 0 +DWIDTH 19 0 +BBX 16 18 1 0 +BITMAP +3018 +3018 +F030 +F030 +3060 +3060 +30C0 +30C0 +319E +31BF +0333 +0303 +0607 +061E +0C38 +0C30 +183F +183F +ENDCHAR + +STARTCHAR threequarters +ENCODING 190 +SWIDTH 834 0 +DWIDTH 19 0 +BBX 17 18 1 0 +BITMAP +781800 +FC1800 +CC3000 +0C3000 +386000 +386000 +0CC000 +CCC000 +FD8600 +798E00 +031E00 +031E00 +063600 +066600 +0C7F80 +0C7F80 +180600 +180600 +ENDCHAR + +STARTCHAR questiondown +ENCODING 191 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 19 2 -5 +BITMAP +0E00 +0E00 +0E00 +0000 +0000 +0E00 +0E00 +0E00 +0E00 +1C00 +3C00 +7800 +7000 +F0E0 +E0E0 +E1E0 +F3C0 +7FC0 +3F00 +ENDCHAR + +STARTCHAR Agrave +ENCODING 192 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 24 1 0 +BITMAP +0E00 +0700 +0380 +01C0 +0000 +03C0 +03C0 +07E0 +07E0 +0E60 +0E70 +0E70 +1C38 +1C38 +1C38 +381C +381C +3FFC +7FFE +700E +700E +E007 +E007 +E007 +ENDCHAR + +STARTCHAR Aacute +ENCODING 193 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 24 1 0 +BITMAP +0038 +0070 +00E0 +01C0 +0000 +03C0 +03C0 +07E0 +07E0 +0E60 +0E70 +0E70 +1C38 +1C38 +1C38 +381C +381C +3FFC +7FFE +700E +700E +E007 +E007 +E007 +ENDCHAR + +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 24 1 0 +BITMAP +01C0 +03E0 +0770 +0E38 +0000 +03C0 +03C0 +07E0 +07E0 +0E60 +0E70 +0E70 +1C38 +1C38 +1C38 +381C +381C +3FFC +7FFE +700E +700E +E007 +E007 +E007 +ENDCHAR + +STARTCHAR Atilde +ENCODING 195 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 23 1 0 +BITMAP +0798 +0FF8 +0CF0 +0000 +03C0 +03C0 +07E0 +07E0 +0E60 +0E70 +0E70 +1C38 +1C38 +1C38 +381C +381C +3FFC +7FFE +700E +700E +E007 +E007 +E007 +ENDCHAR + +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 23 1 0 +BITMAP +0E70 +0E70 +0000 +0000 +03C0 +03C0 +07E0 +07E0 +0E60 +0E70 +0E70 +1C38 +1C38 +1C38 +381C +381C +3FFC +7FFE +700E +700E +E007 +E007 +E007 +ENDCHAR + +STARTCHAR Aring +ENCODING 197 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 23 1 0 +BITMAP +03C0 +0660 +0660 +0660 +03C0 +03C0 +07E0 +07E0 +0E60 +0E70 +0E70 +1C38 +1C38 +1C38 +381C +381C +3FFC +7FFE +700E +700E +E007 +E007 +E007 +ENDCHAR + +STARTCHAR AE +ENCODING 198 +SWIDTH 1000 0 +DWIDTH 24 0 +BBX 22 19 1 0 +BITMAP +03FFF8 +03FFF8 +07F000 +067000 +0E7000 +0E7000 +0E7000 +1C7000 +1C7FF0 +1C7FF0 +387000 +387000 +3FF000 +7FF000 +707000 +707000 +E07000 +E07FFC +E07FFC +ENDCHAR + +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 722 0 +DWIDTH 18 0 +BBX 16 24 1 -5 +BITMAP +07F0 +1FFC +3E3E +780F +7007 +F000 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +F007 +7007 +780F +3E3E +1FFC +07F0 +03C0 +00E0 +00E0 +07E0 +03C0 +ENDCHAR + +STARTCHAR Egrave +ENCODING 200 +SWIDTH 667 0 +DWIDTH 16 0 +BBX 13 24 2 0 +BITMAP +7000 +3800 +1C00 +0E00 +0000 +FFF0 +FFF0 +E000 +E000 +E000 +E000 +E000 +E000 +FFE0 +FFE0 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +FFF8 +FFF8 +ENDCHAR + +STARTCHAR Eacute +ENCODING 201 +SWIDTH 667 0 +DWIDTH 16 0 +BBX 13 24 2 0 +BITMAP +00E0 +01C0 +0380 +0700 +0000 +FFF0 +FFF0 +E000 +E000 +E000 +E000 +E000 +E000 +FFE0 +FFE0 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +FFF8 +FFF8 +ENDCHAR + +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 667 0 +DWIDTH 16 0 +BBX 13 24 2 0 +BITMAP +0700 +0F80 +1DC0 +38E0 +0000 +FFF0 +FFF0 +E000 +E000 +E000 +E000 +E000 +E000 +FFE0 +FFE0 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +FFF8 +FFF8 +ENDCHAR + +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 667 0 +DWIDTH 16 0 +BBX 13 23 2 0 +BITMAP +39C0 +39C0 +0000 +0000 +FFF0 +FFF0 +E000 +E000 +E000 +E000 +E000 +E000 +FFE0 +FFE0 +E000 +E000 +E000 +E000 +E000 +E000 +E000 +FFF8 +FFF8 +ENDCHAR + +STARTCHAR Igrave +ENCODING 204 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 6 24 0 0 +BITMAP +E0 +70 +38 +1C +00 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +ENDCHAR + +STARTCHAR Iacute +ENCODING 205 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 6 24 2 0 +BITMAP +1C +38 +70 +E0 +00 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR + +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 9 24 -1 0 +BITMAP +1C00 +3E00 +7700 +E380 +0000 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +ENDCHAR + +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 7 23 0 0 +BITMAP +EE +EE +00 +00 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +ENDCHAR + +STARTCHAR Eth +ENCODING 208 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 19 19 -1 0 +BITMAP +1FFC00 +1FFF00 +1C0F80 +1C03C0 +1C01C0 +1C01E0 +1C00E0 +1C00E0 +FFC0E0 +FFC0E0 +1C00E0 +1C00E0 +1C00E0 +1C01E0 +1C01C0 +1C03C0 +1C0F80 +1FFF00 +1FFC00 +ENDCHAR + +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 15 23 2 0 +BITMAP +0E30 +1FF0 +19E0 +0000 +E00E +F00E +F00E +F80E +F80E +FC0E +EE0E +EE0E +E70E +E38E +E38E +E1CE +E0CE +E0EE +E07E +E03E +E03E +E01E +E00E +ENDCHAR + +STARTCHAR Ograve +ENCODING 210 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 17 24 1 0 +BITMAP +070000 +038000 +01C000 +00E000 +000000 +07F000 +1FFC00 +3E3E00 +780F00 +700700 +F00780 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +F00780 +700700 +780F00 +3E3E00 +1FFC00 +07F000 +ENDCHAR + +STARTCHAR Oacute +ENCODING 211 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 17 24 1 0 +BITMAP +003800 +007000 +00E000 +01C000 +000000 +07F000 +1FFC00 +3E3E00 +780F00 +700700 +F00780 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +F00780 +700700 +780F00 +3E3E00 +1FFC00 +07F000 +ENDCHAR + +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 17 24 1 0 +BITMAP +01C000 +03E000 +077000 +0E3800 +000000 +07F000 +1FFC00 +3E3E00 +780F00 +700700 +F00780 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +F00780 +700700 +780F00 +3E3E00 +1FFC00 +07F000 +ENDCHAR + +STARTCHAR Otilde +ENCODING 213 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 17 24 1 0 +BITMAP +079800 +0FF800 +0CF000 +000000 +000000 +07F000 +1FFC00 +3E3E00 +780F00 +700700 +F00780 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +F00780 +700700 +780F00 +3E3E00 +1FFC00 +07F000 +ENDCHAR + +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 17 23 1 0 +BITMAP +0E3800 +0E3800 +000000 +000000 +07F000 +1FFC00 +3E3E00 +780F00 +700700 +F00780 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +E00380 +F00780 +700700 +780F00 +3E3E00 +1FFC00 +07F000 +ENDCHAR + +STARTCHAR multiply +ENCODING 215 +SWIDTH 584 0 +DWIDTH 15 0 +BBX 12 12 1 1 +BITMAP +4020 +E070 +70E0 +39C0 +1F80 +0F00 +0F00 +1F80 +39C0 +70E0 +E070 +4020 +ENDCHAR + +STARTCHAR Oslash +ENCODING 216 +SWIDTH 778 0 +DWIDTH 19 0 +BBX 19 19 0 0 +BITMAP +03F860 +0FFEE0 +1F1FC0 +3C0380 +380780 +780FC0 +701DC0 +7039C0 +7071C0 +70E1C0 +71C1C0 +7381C0 +7701C0 +7E03C0 +3C0380 +3C0780 +7F1F00 +EFFE00 +C3F800 +ENDCHAR + +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 15 24 2 0 +BITMAP +0E00 +0700 +0380 +01C0 +0000 +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +F01E +F01E +701C +7C7C +3FF8 +0FE0 +ENDCHAR + +STARTCHAR Uacute +ENCODING 218 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 15 24 2 0 +BITMAP +0070 +00E0 +01C0 +0380 +0000 +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +F01E +F01E +701C +7C7C +3FF8 +0FE0 +ENDCHAR + +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 15 24 2 0 +BITMAP +0780 +0FC0 +1CE0 +3870 +0000 +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +F01E +F01E +701C +7C7C +3FF8 +0FE0 +ENDCHAR + +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 722 0 +DWIDTH 19 0 +BBX 15 23 2 0 +BITMAP +1C70 +1C70 +0000 +0000 +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +E00E +F01E +F01E +701C +7C7C +3FF8 +0FE0 +ENDCHAR + +STARTCHAR Yacute +ENCODING 221 +SWIDTH 667 0 +DWIDTH 17 0 +BBX 15 24 1 0 +BITMAP +0070 +00E0 +01C0 +0380 +0000 +F01E +701C +783C +3838 +3C78 +1C70 +1EF0 +0EE0 +0FE0 +07C0 +07C0 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +0380 +ENDCHAR + +STARTCHAR Thorn +ENCODING 222 +SWIDTH 667 0 +DWIDTH 17 0 +BBX 14 19 2 0 +BITMAP +E000 +E000 +E000 +E000 +FFE0 +FFF8 +E038 +E01C +E01C +E01C +E01C +E038 +FFF8 +FFF0 +E000 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR germandbls +ENCODING 223 +SWIDTH 611 0 +DWIDTH 14 0 +BBX 11 19 2 0 +BITMAP +1E00 +7F80 +F380 +E1C0 +E1C0 +E1C0 +E1C0 +E380 +EF00 +EF80 +E3C0 +E1C0 +E0E0 +E0E0 +E0E0 +E0E0 +E1C0 +EFC0 +EF80 +ENDCHAR + +STARTCHAR agrave +ENCODING 224 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +1C00 +0E00 +0700 +0380 +0000 +1F80 +3FC0 +71E0 +70E0 +00E0 +07E0 +3FE0 +7CE0 +F0E0 +E0E0 +E1E0 +F3E0 +7FF0 +3E70 +ENDCHAR + +STARTCHAR aacute +ENCODING 225 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +01C0 +0380 +0700 +0E00 +0000 +1F80 +3FC0 +71E0 +70E0 +00E0 +07E0 +3FE0 +7CE0 +F0E0 +E0E0 +E1E0 +F3E0 +7FF0 +3E70 +ENDCHAR + +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +0700 +0F80 +1DC0 +38E0 +0000 +1F80 +3FC0 +71E0 +70E0 +00E0 +07E0 +3FE0 +7CE0 +F0E0 +E0E0 +E1E0 +F3E0 +7FF0 +3E70 +ENDCHAR + +STARTCHAR atilde +ENCODING 227 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +1E60 +3FE0 +33C0 +0000 +0000 +1F80 +3FC0 +71E0 +70E0 +00E0 +07E0 +3FE0 +7CE0 +F0E0 +E0E0 +E1E0 +F3E0 +7FF0 +3E70 +ENDCHAR + +STARTCHAR adieresis +ENCODING 228 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 18 1 0 +BITMAP +1DC0 +1DC0 +0000 +0000 +1F80 +3FC0 +71E0 +70E0 +00E0 +07E0 +3FE0 +7CE0 +F0E0 +E0E0 +E1E0 +F3E0 +7FF0 +3E70 +ENDCHAR + +STARTCHAR aring +ENCODING 229 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +0F00 +1980 +1980 +1980 +0F00 +1F80 +3FC0 +71E0 +70E0 +00E0 +07E0 +3FE0 +7CE0 +F0E0 +E0E0 +E1E0 +F3E0 +7FF0 +3E70 +ENDCHAR + +STARTCHAR ae +ENCODING 230 +SWIDTH 889 0 +DWIDTH 22 0 +BBX 20 14 1 0 +BITMAP +1F8F00 +3FFFC0 +71F9E0 +70F0E0 +00E070 +07E070 +3FFFF0 +7CFFF0 +F0E000 +E0E000 +E1F070 +F3F8F0 +7F3FE0 +3E0F80 +ENDCHAR + +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 556 0 +DWIDTH 13 0 +BBX 11 19 1 -5 +BITMAP +1F80 +3FC0 +79E0 +70E0 +E000 +E000 +E000 +E000 +E000 +E000 +70E0 +79E0 +3FC0 +1F80 +1E00 +0700 +0700 +3F00 +1E00 +ENDCHAR + +STARTCHAR egrave +ENCODING 232 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +1C00 +0E00 +0700 +0380 +0000 +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +FFF0 +FFF0 +E000 +E000 +7070 +78F0 +3FE0 +0F80 +ENDCHAR + +STARTCHAR eacute +ENCODING 233 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +01C0 +0380 +0700 +0E00 +0000 +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +FFF0 +FFF0 +E000 +E000 +7070 +78F0 +3FE0 +0F80 +ENDCHAR + +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +0700 +0F80 +1DC0 +38E0 +0000 +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +FFF0 +FFF0 +E000 +E000 +7070 +78F0 +3FE0 +0F80 +ENDCHAR + +STARTCHAR edieresis +ENCODING 235 +SWIDTH 556 0 +DWIDTH 14 0 +BBX 12 18 1 0 +BITMAP +39C0 +39C0 +0000 +0000 +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +FFF0 +FFF0 +E000 +E000 +7070 +78F0 +3FE0 +0F80 +ENDCHAR + +STARTCHAR igrave +ENCODING 236 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 6 19 1 0 +BITMAP +E0 +70 +38 +1C +00 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +ENDCHAR + +STARTCHAR iacute +ENCODING 237 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 6 19 1 0 +BITMAP +1C +38 +70 +E0 +00 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +70 +ENDCHAR + +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 9 19 -1 0 +BITMAP +1C00 +3E00 +7700 +E380 +0000 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +1C00 +ENDCHAR + +STARTCHAR idieresis +ENCODING 239 +SWIDTH 278 0 +DWIDTH 7 0 +BBX 7 18 0 0 +BITMAP +EE +EE +00 +00 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +38 +ENDCHAR + +STARTCHAR eth +ENCODING 240 +SWIDTH 611 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +E000 +39C0 +1F00 +3E00 +C300 +0F80 +3FC0 +79E0 +70E0 +E070 +E070 +E070 +E070 +E070 +E070 +70E0 +79E0 +3FC0 +0F00 +ENDCHAR + +STARTCHAR ntilde +ENCODING 241 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 19 2 0 +BITMAP +3CC0 +7FC0 +6780 +0000 +0000 +EF80 +FFC0 +F1C0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +ENDCHAR + +STARTCHAR ograve +ENCODING 242 +SWIDTH 611 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +1C00 +0E00 +0700 +0380 +0000 +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +E070 +E070 +E070 +E070 +70E0 +79E0 +3FC0 +0F00 +ENDCHAR + +STARTCHAR oacute +ENCODING 243 +SWIDTH 611 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +01C0 +0380 +0700 +0E00 +0000 +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +E070 +E070 +E070 +E070 +70E0 +79E0 +3FC0 +0F00 +ENDCHAR + +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 611 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +0700 +0F80 +1DC0 +38E0 +0000 +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +E070 +E070 +E070 +E070 +70E0 +79E0 +3FC0 +0F00 +ENDCHAR + +STARTCHAR otilde +ENCODING 245 +SWIDTH 611 0 +DWIDTH 14 0 +BBX 12 19 1 0 +BITMAP +1E60 +3FE0 +33C0 +0000 +0000 +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +E070 +E070 +E070 +E070 +70E0 +79E0 +3FC0 +0F00 +ENDCHAR + +STARTCHAR odieresis +ENCODING 246 +SWIDTH 611 0 +DWIDTH 14 0 +BBX 12 18 1 0 +BITMAP +1DC0 +1DC0 +0000 +0000 +0F00 +3FC0 +79E0 +70E0 +E070 +E070 +E070 +E070 +E070 +E070 +70E0 +79E0 +3FC0 +0F00 +ENDCHAR + +STARTCHAR divide +ENCODING 247 +SWIDTH 584 0 +DWIDTH 15 0 +BBX 11 12 2 1 +BITMAP +0E00 +0E00 +0E00 +0000 +0000 +FFE0 +FFE0 +0000 +0000 +0E00 +0E00 +0E00 +ENDCHAR + +STARTCHAR oslash +ENCODING 248 +SWIDTH 611 0 +DWIDTH 14 0 +BBX 14 14 0 0 +BITMAP +078C +1FF8 +3CF0 +3870 +70F8 +71F8 +73B8 +7738 +7E38 +7C38 +3870 +7CF0 +DFE0 +8780 +ENDCHAR + +STARTCHAR ugrave +ENCODING 249 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 19 2 0 +BITMAP +3800 +1C00 +0E00 +0700 +0000 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E1E0 +73E0 +7EE0 +1CE0 +ENDCHAR + +STARTCHAR uacute +ENCODING 250 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 19 2 0 +BITMAP +0380 +0700 +0E00 +1C00 +0000 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E1E0 +73E0 +7EE0 +1CE0 +ENDCHAR + +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 19 2 0 +BITMAP +0E00 +1F00 +3B80 +71C0 +0000 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E1E0 +73E0 +7EE0 +1CE0 +ENDCHAR + +STARTCHAR udieresis +ENCODING 252 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 11 18 2 0 +BITMAP +3B80 +3B80 +0000 +0000 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E0E0 +E1E0 +73E0 +7EE0 +1CE0 +ENDCHAR + +STARTCHAR yacute +ENCODING 253 +SWIDTH 556 0 +DWIDTH 15 0 +BBX 13 24 1 -5 +BITMAP +00E0 +01C0 +0380 +0700 +0000 +E038 +E038 +7038 +7870 +3870 +3CF0 +1CE0 +1CE0 +0FC0 +0FC0 +07C0 +0780 +0380 +0380 +0700 +0700 +0E00 +3E00 +3C00 +ENDCHAR + +STARTCHAR thorn +ENCODING 254 +SWIDTH 611 0 +DWIDTH 15 0 +BBX 12 24 2 -5 +BITMAP +E000 +E000 +E000 +E000 +E000 +EF80 +FFC0 +F9E0 +F0E0 +E070 +E070 +E070 +E070 +E070 +E070 +F0E0 +F9E0 +FFC0 +EF80 +E000 +E000 +E000 +E000 +E000 +ENDCHAR + +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 556 0 +DWIDTH 15 0 +BBX 13 23 1 -5 +BITMAP +1CE0 +1CE0 +0000 +0000 +E038 +E038 +7038 +7870 +3870 +3CF0 +1CE0 +1CE0 +0FC0 +0FC0 +07C0 +0780 +0380 +0380 +0700 +0700 +0E00 +3E00 +3C00 +ENDCHAR + +ENDFONT diff --git a/res/fonts/helvB24.cc b/res/fonts/helvB24.cc new file mode 100644 index 0000000..0a31625 Binary files /dev/null and b/res/fonts/helvB24.cc differ diff --git a/res/fonts/licensehelv.txt b/res/fonts/licensehelv.txt new file mode 100644 index 0000000..0c39824 --- /dev/null +++ b/res/fonts/licensehelv.txt @@ -0,0 +1,876 @@ +The fonts were obtained from the debian package xfree86. +The copyright file from this package is included here. + + +Package: xfree86 +Obtained from: XFree86 CVS repository (anoncvs@anoncvs.xfree86.org:/cvs) +Upstream author(s): The XFree86 Project, Inc., et al. +Debian package author(s): Stephen Early, Mark Eichin, Branden Robinson + +Debian modifications to upstream sources: + + The following files were removed from the source package due to + non-DFSG-compliant licensing: + xc/fonts/scaled/Type1/COPYRIGHT.BH + xc/fonts/scaled/Type1/COPYRIGHT.IBM + xc/fonts/scaled/Type1/UTBI____.afm + xc/fonts/scaled/Type1/UTBI____.pfa + xc/fonts/scaled/Type1/UTB_____.afm + xc/fonts/scaled/Type1/UTB_____.pfa + xc/fonts/scaled/Type1/UTI_____.afm + xc/fonts/scaled/Type1/UTI_____.pfa + xc/fonts/scaled/Type1/UTRG____.afm + xc/fonts/scaled/Type1/UTRG____.pfa + xc/fonts/scaled/Type1/cour.afm + xc/fonts/scaled/Type1/cour.pfa + xc/fonts/scaled/Type1/courb.afm + xc/fonts/scaled/Type1/courb.pfa + xc/fonts/scaled/Type1/courbi.afm + xc/fonts/scaled/Type1/courbi.pfa + xc/fonts/scaled/Type1/couri.afm + xc/fonts/scaled/Type1/couri.pfa + xc/fonts/scaled/Type1/lcdxmo.afm + xc/fonts/scaled/Type1/lcdxmo.pfa + xc/fonts/scaled/Type1/lcdxmr.afm + xc/fonts/scaled/Type1/lcdxmr.pfa + xc/fonts/scaled/Type1/lcdxro.afm + xc/fonts/scaled/Type1/lcdxro.pfa + xc/fonts/scaled/Type1/lcdxrr.afm + xc/fonts/scaled/Type1/lcdxrr.pfa + xc/fonts/scaled/Type1/lcdxso.afm + xc/fonts/scaled/Type1/lcdxso.pfa + xc/fonts/scaled/Type1/lcdxsr.afm + xc/fonts/scaled/Type1/lcdxsr.pfa + + See the debian/patches directory for all other changes to upstream + source. + +Debian copyright(s)/license(s): + +Unless otherwise noted, all modifications and additions to XFree86 found in +this Debian package bear the following copyright and license terms: + +Copyright 1996-2001 Software in the Public Interest, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +SOFTWARE IN THE PUBLIC INTEREST, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Software in the Public +Interest, Inc. shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from Software in the Public Interest, Inc. + +Upstream copyright(s)/license(s): + +******************************************************************************** + +1. XFree86 License + +XFree86 code without an explicit copyright is covered by the following copy- +right/license: + +Copyright (C) 1994-2001 The XFree86 Project, Inc. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is fur- +nished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- +NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the XFree86 Project shall not +be used in advertising or otherwise to promote the sale, use or other deal- +ings in this Software without prior written authorization from the XFree86 +Project. + +2. Other Licenses + +Portions of code are covered by the following licenses/copyrights: + +2.1 X Consortium + +Copyright (C) 1996 X Consortium + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is fur- +nished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X +CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the X Consortium shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the X Consortium. + +X Window System is a trademark of X Consortium, Inc. + +2.2 Berkeley-based copyrights: + +2.2.1 General + +Redistribution and use in source and binary forms, with or without modifica- +tion, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- +CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- +CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- +ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + +2.2.2 UCB/LBL + +Copyright (c) 1993 The Regents of the University of California. All rights +reserved. + +This software was developed by the Computer Systems Engineering group at +Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and contributed to +Berkeley. + +All advertising materials mentioning features or use of this software must +display the following acknowledgement: This product includes software devel- +oped by the University of California, Lawrence Berkeley Laboratory. + +Redistribution and use in source and binary forms, with or without modifica- +tion, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: This product includes soft- + ware developed by the University of California, Berkeley and its con- + tributors. + + 4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS- +CLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +2.3 NVIDIA Corp + +Copyright (c) 1996 NVIDIA, Corp. All rights reserved. + +NOTICE TO USER: The source code is copyrighted under U.S. and international +laws. NVIDIA, Corp. of Sunnyvale, California owns the copyright and as +design patents pending on the design and interface of the NV chips. Users +and possessors of this source code are hereby granted a nonexclusive, roy- +alty-free copyright and design patent license to use this code in individual +and commercial software. + +Any use of this source code must include, in the user documentation and +internal comments to the code, notices to the end user as follows: + +Copyright (c) 1996 NVIDIA, Corp. NVIDIA design patents pending in the U.S. +and foreign countries. + +NVIDIA, CORP. MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE +CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WAR- +RANTY OF ANY KIND. NVIDIA, CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA, CORP. BE LIABLE +FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY DAM- +AGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE. + +2.4 GLX Public License + +GLX PUBLIC LICENSE (Version 1.0 (2/11/99)) ("License") + +Subject to any third party claims, Silicon Graphics, Inc. ("SGI") hereby +grants permission to Recipient (defined below), under Recipient's copyrights +in the Original Software (defined below), to use, copy, modify, merge, pub- +lish, distribute, sublicense and/or sell copies of Subject Software (defined +below), and to permit persons to whom the Subject Software is furnished in +accordance with this License to do the same, subject to all of the following +terms and conditions, which Recipient accepts by engaging in any such use, +copying, modifying, merging, publishing, distributing, sublicensing or sell- +ing: + +1. Definitions. + + (a) "Original Software" means source code of computer software code + which is described in Exhibit A as Original Software. + + (b) "Modifications" means any addition to or deletion from the sub- + stance or structure of either the Original Software or any previous + Modifications. When Subject Software is released as a series of + files, a Modification means (i) any addition to or deletion from + the contents of a file containing Original Software or previous + Modifications and (ii) any new file that contains any part of the + Original Code or previous Modifications. + + (c) "Subject Software" means the Original Software or Modifications + or the combination of the Original Software and Modifications, or + portions of any of the foregoing. + + (d) "Recipient" means an individual or a legal entity exercising + rights under, and complying with all of the terms of, this License. + For legal entities, "Recipient" includes any entity which controls, + is controlled by, or is under common control with Recipient. For + purposes of this definition, "control" of an entity means (a) the + power, direct or indirect, to direct or manage such entity, or (b) + ownership of fifty percent (50%) or more of the outstanding shares + or beneficial ownership of such entity. + +2. Redistribution of Source Code Subject to These Terms. Redistributions of +Subject Software in source code form must retain the notice set forth in +Exhibit A, below, in every file. A copy of this License must be included in +any documentation for such Subject Software where the recipients' rights +relating to Subject Software are described. Recipient may distribute the +source code version of Subject Software under a license of Recipient's +choice, which may contain terms different from this License, provided that +(i) Recipient is in compliance with the terms of this License, and (ii) the +license terms include this Section 2 and Sections 3, 4, 7, 8, 10, 12 and 13 +of this License, which terms may not be modified or superseded by any other +terms of such license. If Recipient distributes the source code version under +a different license Recipient must make it absolutely clear that any terms +which differ from this License are offered by Recipient alone, not by SGI. +Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as +a result of any such terms Recipient offers. + +3. Redistribution in Executable Form. The notice set forth in Exhibit A must +be conspicuously included in any notice in an executable version of Subject +Software, related documentation or collateral in which Recipient describes +the user's rights relating to the Subject Software. Recipient may distribute +the executable version of Subject Software under a license of Recipient's +choice, which may contain terms different from this License, provided that +(i) Recipient is in compliance with the terms of this License, and (ii) the +license terms include this Section 3 and Sections 4, 7, 8, 10, 12 and 13 of +this License, which terms may not be modified or superseded by any other +terms of such license. If Recipient distributes the executable version under +a different license Recipient must make it absolutely clear that any terms +which differ from this License are offered by Recipient alone, not by SGI. +Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as +a result of any such terms Recipient offers. + +4. Termination. This License and the rights granted hereunder will terminate +automatically if Recipient fails to comply with terms herein and fails to +cure such breach within 30 days of the breach. Any sublicense to the Subject +Software which is properly granted shall survive any termination of this +License absent termination by the terms of such sublicense. Provisions which, +by their nature, must remain in effect beyond the termination of this License +shall survive. + +5. No Trademark Rights. This License does not grant any rights to use any +trade name, trademark or service mark whatsoever. No trade name, trademark or +service mark of SGI may be used to endorse or promote products derived from +the Subject Software without prior written permission of SGI. + +6. No Other Rights. This License does not grant any rights with respect to +the OpenGL API or to any software or hardware implementation thereof or to +any other software whatsoever, nor shall any other rights or licenses not +expressly granted hereunder arise by implication, estoppel or otherwise with +respect to the Subject Software. Title to and ownership of the Original Soft- +ware at all times remains with SGI. All rights in the Original Software not +expressly granted under this License are reserved. + +7. Compliance with Laws; Non-Infringement. Recipient shall comply with all +applicable laws and regulations in connection with use and distribution of +the Subject Software, including but not limited to, all export and import +control laws and regulations of the U.S. government and other countries. +Recipient may not distribute Subject Software that (i) in any way infringes +(directly or contributorily) the rights (including patent, copyright, trade +secret, trademark or other intellectual property rights of any kind) of any +other person or entity or (ii) breaches any representation or warranty, +express, implied or statutory, which under any applicable law it might be +deemed to have been distributed. + +8. Claims of Infringement. If Recipient at any time has knowledge of any one +or more third party claims that reproduction, modification, use, distribu- +tion, import or sale of Subject Software (including particular functionality +or code incorporated in Subject Software) infringes the third party's intel- +lectual property rights, Recipient must place in a well-identified web page +bearing the title "LEGAL" a description of each such claim and a description +of the party making each such claim in sufficient detail that a user of the +Subject Software will know whom to contact regarding the claim. Also, upon +gaining such knowledge of any such claim, Recipient must conspicuously +include the URL for such web page in the Exhibit A notice required under Sec- +tions 2 and 3, above, and in the text of any related documentation, license +agreement or collateral in which Recipient describes end user's rights relat- +ing to the Subject Software. If Recipient obtains such knowledge after it +makes Subject Software available to any other person or entity, Recipient +shall take other steps (such as notifying appropriate mailing lists or news- +groups) reasonably calculated to inform those who received the Subject Soft- +ware that new knowledge has been obtained. + +9. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, +WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT +LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, MER- +CHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON- INFRINGING. SGI ASSUMES NO +RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE +PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY SER- +VICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN +ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED +HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THE- +ORY, WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIA- +BILITY), CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR +ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY +CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK +STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER +COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF +THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY +TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO +THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO +NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, +SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT. + +11. Indemnity. Recipient shall be solely responsible for damages arising, +directly or indirectly, out of its utilization of rights under this License. +Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. +from and against any loss, liability, damages, costs or expenses (including +the payment of reasonable attorneys fees) arising out of Recipient's use, +modification, reproduction and distribution of the Subject Software or out of +any representation or warranty made by Recipient. + +12. U.S. Government End Users. The Subject Software is a "commercial item" +consisting of "commercial computer software" as such terms are defined in +title 48 of the Code of Federal Regulations and all U.S. Government End +Users acquire only the rights set forth in this License and are subject to +the terms of this License. + +13. Miscellaneous. This License represents the complete agreement concerning +subject matter hereof. If any provision of this License is held to be unen- +forceable, such provision shall be reformed so as to achieve as nearly as +possible the same economic effect as the original provision and the remainder +of this License will remain in effect. This License shall be governed by and +construed in accordance with the laws of the United States and the State of +California as applied to agreements entered into and to be performed entirely +within California between California residents. Any litigation relating to +this License shall be subject to the exclusive jurisdiction of the Federal +Courts of the Northern District of California (or, absent subject matter +jurisdiction in such courts, the courts of the State of California), with +venue lying exclusively in Santa Clara County, California, with the losing +party responsible for costs, including without limitation, court costs and +reasonable attorneys fees and expenses. The application of the United Nations +Convention on Contracts for the International Sale of Goods is expressly +excluded. Any law or regulation which provides that the language of a con- +tract shall be construed against the drafter shall not apply to this License. + +Exhibit A + +The contents of this file are subject to Sections 2, 3, 4, 7, 8, 10, 12 and +13 of the GLX Public License Version 1.0 (the "License"). You may not use +this file except in compliance with those sections of the License. You may +obtain a copy of the License at Silicon Graphics, Inc., attn: Legal Services, +2011 N. Shoreline Blvd., Mountain View, CA 94043 or at +http://www.sgi.com/software/opensource/glx/license.html. + +Software distributed under the License is distributed on an "AS IS" basis. +ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED +WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON- +INFRINGEMENT. See the License for the specific language governing rights and +limitations under the License. + +The Original Software is GLX version 1.2 source code, released February, +1999. The developer of the Original Software is Silicon Graphics, Inc. Those +portions of the Subject Software created by Silicon Graphics, Inc. are Copy- +right (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. + +2.5 CID Font Code Public License + +CID FONT CODE PUBLIC LICENSE (Version 1.0 (3/31/99))("License") + +Subject to any applicable third party claims, Silicon Graphics, Inc. ("SGI") +hereby grants permission to Recipient (defined below), under SGI's copyrights +in the Original Software (defined below), to use, copy, modify, merge, pub- +lish, distribute, sublicense and/or sell copies of Subject Software (defined +below) in both source code and executable form, and to permit persons to whom +the Subject Software is furnished in accordance with this License to do the +same, subject to all of the following terms and conditions, which Recipient +accepts by engaging in any such use, copying, modifying, merging, publica- +tion, distributing, sublicensing or selling: + +1. Definitions. + + a. "Original Software" means source code of computer software code + that is described in Exhibit A as Original Software. + + b. "Modifications" means any addition to or deletion from the sub- + stance or structure of either the Original Software or any previous + Modifications. When Subject Software is released as a series of + files, a Modification means (i) any addition to or deletion from + the contents of a file containing Original Software or previous + Modifications and (ii) any new file that contains any part of the + Original Code or previous Modifications. + + c. "Subject Software" means the Original Software or Modifications + or the combination of the Original Software and Modifications, or + portions of any of the foregoing. + + d. "Recipient" means an individual or a legal entity exercising + rights under the terms of this License. For legal entities, "Recip- + ient" includes any entity that controls, is controlled by, or is + under common control with Recipient. For purposes of this defini- + tion, "control" of an entity means (i) the power, direct or indi- + rect, to direct or manage such entity, or (ii) ownership of fifty + percent (50%) or more of the outstanding shares or beneficial own- + ership of such entity. + + e. "Required Notice" means the notice set forth in Exhibit A to + this License. + + f. "Accompanying Technology" means any software or other technology + that is not a Modification and that is distributed or made publicly + available by Recipient with the Subject Software. Separate soft- + ware files that do not contain any Original Software or any previ- + ous Modification shall not be deemed a Modification, even if such + software files are aggregated as part of a product, or in any + medium of storage, with any file that does contain Original Soft- + ware or any previous Modification. + +2. License Terms. All distribution of the Subject Software must be made sub- +ject to the terms of this License. A copy of this License and the Required +Notice must be included in any documentation for Subject Software where +Recipient's rights relating to Subject Software and/or any Accompanying Tech- +nology are described. Distributions of Subject Software in source code form +must also include the Required Notice in every file distributed. In addition, +a ReadMe file entitled "Important Legal Notice" must be distributed with each +distribution of one or more files that incorporate Subject Software. That +file must be included with distributions made in both source code and exe- +cutable form. A copy of the License and the Required Notice must be included +in that file. Recipient may distribute Accompanying Technology under a +license of Recipient's choice, which may contain terms different from this +License, provided that (i) Recipient is in compliance with the terms of this +License, (ii) such other license terms do not modify or supersede the terms +of this License as applicable to the Subject Software, (iii) Recipient hereby +indemnifies SGI for any liability incurred by SGI as a result of the distri- +bution of Accompanying Technology or the use of other license terms. + +3. Termination. This License and the rights granted hereunder will terminate +automatically if Recipient fails to comply with terms herein and fails to +cure such breach within 30 days of the breach. Any sublicense to the Subject +Software that is properly granted shall survive any termination of this +License absent termination by the terms of such sublicense. Provisions which, +by their nature, must remain in effect beyond the termination of this License +shall survive. + +4. Trademark Rights. This License does not grant any rights to use any trade +name, trademark or service mark whatsoever. No trade name, trademark or ser- +vice mark of SGI may be used to endorse or promote products derived from or +incorporating any Subject Software without prior written permission of SGI. + +5. No Other Rights. No rights or licenses not expressly granted hereunder +shall arise by implication, estoppel or otherwise. Title to and ownership of +the Original Software at all times remains with SGI. All rights in the Origi- +nal Software not expressly granted under this License are reserved. + +6. Compliance with Laws; Non-Infringement. Recipient shall comply with all +applicable laws and regulations in connection with use and distribution of +the Subject Software, including but not limited to, all export and import +control laws and regulations of the U.S. government and other countries. +Recipient may not distribute Subject Software that (i) in any way infringes +(directly or contributorily) the rights (including patent, copyright, trade +secret, trademark or other intellectual property rights of any kind) of any +other person or entity, or (ii) breaches any representation or warranty, +express, implied or statutory, which under any applicable law it might be +deemed to have been distributed. + +7. Claims of Infringement. If Recipient at any time has knowledge of any one +or more third party claims that reproduction, modification, use, distribu- +tion, import or sale of Subject Software (including particular functionality +or code incorporated in Subject Software) infringes the third party's intel- +lectual property rights, Recipient must place in a well-identified web page +bearing the title "LEGAL" a description of each such claim and a description +of the party making each such claim in sufficient detail that a user of the +Subject Software will know whom to contact regarding the claim. Also, upon +gaining such knowledge of any such claim, Recipient must conspicuously +include the URL for such web page in the Required Notice, and in the text of +any related documentation, license agreement or collateral in which Recipient +describes end user's rights relating to the Subject Software. If Recipient +obtains such knowledge after it makes Subject Software available to any other +person or entity, Recipient shall take other steps (such as notifying appro- +priate mailing lists or newsgroups) reasonably calculated to provide such +knowledge to those who received the Subject Software. + +8. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, +WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT +LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, MER- +CHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. SGI ASSUMES NO +RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE +PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY SER- +VICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN +ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED +HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, +WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), +CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SUBJECT SOFTWARE OR +THE USE OR OTHER DEALINGS IN THE SUBJECT SOFTWARE. SOME JURISDICTIONS DO NOT +ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO THIS EXCLUSION AND +LIMITATION MAY NOT APPLY TO RECIPIENT TO THE EXTENT SO DISALLOWED. + +10. Indemnity. Recipient shall be solely responsible for damages arising, +directly or indirectly, out of its utilization of rights under this License. +Recipient will defend, indemnify and hold SGI and its successors and assigns +harmless from and against any loss, liability, damages, costs or expenses +(including the payment of reasonable attorneys fees) arising out of (Recipi- +ent's use, modification, reproduction and distribution of the Subject Soft- +ware or out of any representation or warranty made by Recipient. + +11. U.S. Government End Users. The Subject Software is a "commercial item" +consisting of "commercial computer software" as such terms are defined in +title 48 of the Code of Federal Regulations and all U.S. Government End Users +acquire only the rights set forth in this License and are subject to the +terms of this License. + +12. Miscellaneous. This License represents the complete agreement concerning +subject matter hereof. If any provision of this License is held to be unen- +forceable by any judicial or administrative authority having proper jurisdic- +tion with respect thereto, such provision shall be reformed so as to achieve +as nearly as possible the same economic effect as the original provision and +the remainder of this License will remain in effect. This License shall be +governed by and construed in accordance with the laws of the United States +and the State of California as applied to agreements entered into and to be +performed entirely within California between California residents. Any liti- +gation relating to this License shall be subject to the exclusive jurisdic- +tion of the Federal Courts of the Northern District of California (or, absent +subject matter jurisdiction in such courts, the courts of the State of Cali- +fornia), with venue lying exclusively in Santa Clara County, California, with +the losing party responsible for costs, including without limitation, court +costs and reasonable attorneys fees and expenses. The application of the +United Nations Convention on Contracts for the International Sale of Goods is +expressly excluded. Any law or regulation that provides that the language of +a contract shall be construed against the drafter shall not apply to this +License. + +Exhibit A + +Copyright (c) 1994-1999 Silicon Graphics, Inc. + +The contents of this file are subject to the CID Font Code Public License +Version 1.0 (the "License"). You may not use this file except in compliance +with the License. You may obtain a copy of the License at Silicon Graphics, +Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043 +or at http://www.sgi.com/software/opensource/cid/license.html + +Software distributed under the License is distributed on an "AS IS" basis. +ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED +WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON- +INFRINGEMENT. See the License for the specific language governing rights and +limitations under the License. + +The Original Software (as defined in the License) is CID font code that was +developed by Silicon Graphics, Inc. Those portions of the Subject Software +(as defined in the License) that were created by Silicon Graphics, Inc. are +Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. + +[NOTE: When using this text in connection with Subject Software delivered +solely in object code form, Recipient may replace the words "this file" with +"this software" in both the first and second sentences.] + +Additional copyright(s)/license(s): + +******************************************************************************** + +SGI FREE SOFTWARE LICENSE B (Version 1.1 [02/22/2000]) + +1. Definitions. + +1.1. "Additional Notice Provisions" means such additional provisions as +appear in the Notice in Original Code under the heading "Additional Notice +Provisions." +1.2. "Covered Code" means the Original Code or Modifications, or any +combination thereof. +1.3. "Hardware" means any physical device that accepts input, processes +input, stores the results of processing, and/or provides output. +1.4. "Larger Work" means a work that combines Covered Code or portions +thereof with code not governed by the terms of this License. +1.5. "Licensable" means having the right to grant, to the maximum extent +possible, whether at the time of the initial grant or subsequently +acquired, any and all of the rights conveyed herein. +1.6. "License" means this document. +1.7. "Licensed Patents" means patent claims Licensable by SGI that are +infringed by the use or sale of Original Code or any Modifications provided +by SGI, or any combination thereof. +1.8. "Modifications" means any addition to or deletion from the substance +or structure of the Original Code or any previous Modifications. When +Covered Code is released as a series of files, a Modification is: + A. Any addition to the contents of a file containing Original Code and/or + addition to or deletion from the contents of a file containing previous + Modifications. + B. Any new file that contains any part of the Original Code or previous + Modifications. +1.9. "Notice" means any notice in Original Code or Covered Code, as +required by and in compliance with this License. +1.10. "Original Code" means source code of computer software code that is +described in the source code Notice required by Exhibit A as Original Code, +and updates and error corrections specifically thereto. +1.11. "Recipient" means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License or a future +version of this License issued under Section 8. For legal entities, +"Recipient" includes any entity that controls, is controlled by, or is +under common control with Recipient. For purposes of this definition, +"control" of an entity means (a) the power, direct or indirect, to direct +or manage such entity, or (b) ownership of fifty percent (50%) or more of +the outstanding shares or beneficial ownership of such entity. +1.12. "Recipient Patents" means patent claims Licensable by a Recipient +that are infringed by the use or sale of Original Code or any Modifications +provided by SGI, or any combination thereof. +1.13. "SGI" means Silicon Graphics, Inc. +1.14. "SGI Patents" means patent claims Licensable by SGI other than the +Licensed Patents. + +2. License Grant and Restrictions. + +2.1. SGI License Grant. Subject to the terms of this License and any third +party intellectual property claims, for the duration of intellectual +property protections inherent in the Original Code, SGI hereby grants +Recipient a worldwide, royalty­free, non­exclusive license, to do the +following: (i) under copyrights Licensable by SGI, to reproduce, +distribute, create derivative works from, and, to the extent applicable, +display and perform the Original Code and/or any Modifications provided by +SGI alone and/or as part of a Larger Work; and (ii) under any Licensable +Patents, to make, have made, use, sell, offer for sale, import and/or +otherwise transfer the Original Code and/or any Modifications provided by +SGI. Recipient accepts the terms and conditions of this License by +undertaking any of the aforementioned actions. The patent license shall +apply to the Covered Code if, at the time any related Modification is +added, such addition of the Modification causes such combination to be +covered by the Licensed Patents. The patent license in Section 2.1(ii) +shall not apply to any other combinations that include the Modification. +No patent license is provided under SGI Patents for infringements of SGI +Patents by Modifications not provided by SGI or combinations of Original +Code and Modifications not provided by SGI. + +2.2. Recipient License Grant. Subject to the terms of this License and any +third party intellectual property claims, Recipient hereby grants SGI and +any other Recipients a worldwide, royalty­free, non­exclusive license, +under any Recipient Patents, to make, have made, use, sell, offer for sale, +import and/or otherwise transfer the Original Code and/or any Modifications +provided by SGI. + +2.3. No License For Hardware Implementations. The licenses granted in +Section 2.1 and 2.2 are not applicable to implementation in Hardware of the +algorithms embodied in the Original Code or any Modifications provided by +SGI . + +3. Redistributions. + +3.1. Retention of Notice/Copy of License. The Notice set forth in Exhibit +A, below, must be conspicuously retained or included in any and all +redistributions of Covered Code. For distributions of the Covered Code in +source code form, the Notice must appear in every file that can include a +text comments field; in executable form, the Notice and a copy of this +License must appear in related documentation or collateral where the +Recipient's rights relating to Covered Code are described. Any Additional +Notice Provisions which actually appears in the Original Code must also be +retained or included in any and all redistributions of Covered Code. + +3.2. Alternative License. Provided that Recipient is in compliance with the +terms of this License, Recipient may, so long as without derogation of any +of SGI's rights in and to the Original Code, distribute the source code +and/or executable version(s) of Covered Code under (1) this License; (2) a +license identical to this License but for only such changes as are +necessary in order to clarify Recipient's role as licensor of +Modifications; and/or (3) a license of Recipient's choosing, containing +terms different from this License, provided that the license terms include +this Section 3 and Sections 4, 6, 7, 10, 12, and 13, which terms may not be +modified or superseded by any other terms of such license. If Recipient +elects to use any license other than this License, Recipient must make it +absolutely clear that any of its terms which differ from this License are +offered by Recipient alone, and not by SGI. It is emphasized that this +License is a limited license, and, regardless of the license form employed +by Recipient in accordance with this Section 3.2, Recipient may relicense +only such rights, in Original Code and Modifications by SGI, as it has +actually been granted by SGI in this License. + +3.3. Indemnity. Recipient hereby agrees to indemnify SGI for any liability +incurred by SGI as a result of any such alternative license terms Recipient +offers. + +4. Termination. This License and the rights granted hereunder will +terminate automatically if Recipient breaches any term herein and fails to +cure such breach within 30 days thereof. Any sublicense to the Covered Code +that is properly granted shall survive any termination of this License, +absent termination by the terms of such sublicense. Provisions that, by +their nature, must remain in effect beyond the termination of this License, +shall survive. + +5. No Trademark Or Other Rights. This License does not grant any rights to: +(i) any software apart from the Covered Code, nor shall any other rights or +licenses not expressly granted hereunder arise by implication, estoppel or +otherwise with respect to the Covered Code; (ii) any trade name, trademark +or service mark whatsoever, including without limitation any related right +for purposes of endorsement or promotion of products derived from the +Covered Code, without prior written permission of SGI; or (iii) any title +to or ownership of the Original Code, which shall at all times remains with +SGI. All rights in the Original Code not expressly granted under this +License are reserved. + +6. Compliance with Laws; Non­Infringement. There are various worldwide +laws, regulations, and executive orders applicable to dispositions of +Covered Code, including without limitation export, re­export, and import +control laws, regulations, and executive orders, of the U.S. government and +other countries, and Recipient is reminded it is obliged to obey such laws, +regulations, and executive orders. Recipient may not distribute Covered +Code that (i) in any way infringes (directly or contributorily) any +intellectual property rights of any kind of any other person or entity or +(ii) breaches any representation or warranty, express, implied or +statutory, to which, under any applicable law, it might be deemed to have +been subject. + +7. Claims of Infringement. If Recipient learns of any third party claim +that any disposition of Covered Code and/or functionality wholly or +partially infringes the third party's intellectual property rights, +Recipient will promptly notify SGI of such claim. + +8. Versions of the License. SGI may publish revised and/or new versions of +the License from time to time, each with a distinguishing version number. +Once Covered Code has been published under a particular version of the +License, Recipient may, for the duration of the license, continue to use it +under the terms of that version, or choose to use such Covered Code under +the terms of any subsequent version published by SGI. Subject to the +provisions of Sections 3 and 4 of this License, only SGI may modify the +terms applicable to Covered Code created under this License. + +9. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED "AS IS." ALL EXPRESS +AND IMPLIED WARRANTIES AND CONDITIONS ARE DISCLAIMED, INCLUDING, WITHOUT +LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, +SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND +NON­INFRINGEMENT. SGI ASSUMES NO RISK AS TO THE QUALITY AND PERFORMANCE OF +THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, SGI +ASSUMES NO COST OR LIABILITY FOR SERVICING, REPAIR OR CORRECTION. THIS +DISCLAIMER OF WARRANTY IS AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY +COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT SUBJECT TO THIS DISCLAIMER. + +10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES NOR LEGAL THEORY, +WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT +LIABILITY), CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE +FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF +ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, +WORK STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND +ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN +INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY +SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM +SGI's NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. +SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL +OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO +RECIPIENT. + +11. Indemnity. Recipient shall be solely responsible for damages arising, +directly or indirectly, out of its utilization of rights under this +License. Recipient will defend, indemnify and hold harmless Silicon +Graphics, Inc. from and against any loss, liability, damages, costs or +expenses (including the payment of reasonable attorneys fees) arising out +of Recipient's use, modification, reproduction and distribution of the +Covered Code or out of any representation or warranty made by Recipient. + +12. U.S. Government End Users. The Covered Code is a "commercial item" +consisting of "commercial computer software" as such terms are defined in +title 48 of the Code of Federal Regulations and all U.S. Government End +Users acquire only the rights set forth in this License and are subject to +the terms of this License. + +13. Miscellaneous. This License represents the complete agreement +concerning the its subject matter. If any provision of this License is held +to be unenforceable, such provision shall be reformed so as to achieve as +nearly as possible the same legal and economic effect as the original +provision and the remainder of this License will remain in effect. This +License shall be governed by and construed in accordance with the laws of +the United States and the State of California as applied to agreements +entered into and to be performed entirely within California between +California residents. Any litigation relating to this License shall be +subject to the exclusive jurisdiction of the Federal Courts of the Northern +District of California (or, absent subject matter jurisdiction in such +courts, the courts of the State of California), with venue lying +exclusively in Santa Clara County, California, with the losing party +responsible for costs, including without limitation, court costs and +reasonable attorneys fees and expenses. The application of the United +Nations Convention on Contracts for the International Sale of Goods is +expressly excluded. Any law or regulation that provides that the language +of a contract shall be construed against the drafter shall not apply to +this License. + +Exhibit A License Applicability. + +Except to the extent portions of this file are made subject to an +alternative license as permitted in the SGI Free Software License B, +Version 1.1 (the "License"), the contents of this file are subject only to +the provisions of the License. You may not use this file except in +compliance with the License. You may obtain a copy of the License at +Silicon Graphics, Inc., attn: Legal Services, 1600 Amphitheatre Parkway, +Mountain View, CA 94043­1351, or at: http://oss.sgi.com/projects/FreeB Note +that, as provided in the License, the Software is distributed on an "AS IS" +basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, +INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF +MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, +AND NON­INFRINGEMENT. Original Code. The Original Code is: [name of +software, version number, and release date], developed by Silicon Graphics, +Inc. The Original Code is Copyright (c) [dates of first publication, as +appearing in the Notice in the Original Code] Silicon Graphics, Inc. +Copyright in any portions created by third parties is as indicated +elsewhere herein. All Rights Reserved. + +Additional Notice Provisions: + +[such additional provisions, if any, as appear in the Notice in the +Original Code under the heading "Additional Notice Provisions"] diff --git a/res/images/defposter.png b/res/images/defposter.png new file mode 100644 index 0000000..1bfe1bd Binary files /dev/null and b/res/images/defposter.png differ diff --git a/res/images/dolbyoff.png b/res/images/dolbyoff.png new file mode 100644 index 0000000..907d2b3 Binary files /dev/null and b/res/images/dolbyoff.png differ diff --git a/res/images/dolbyon.png b/res/images/dolbyon.png new file mode 100644 index 0000000..2d4971f Binary files /dev/null and b/res/images/dolbyon.png differ diff --git a/res/images/hd1080i.png b/res/images/hd1080i.png new file mode 100644 index 0000000..8b3b53f Binary files /dev/null and b/res/images/hd1080i.png differ diff --git a/res/images/hd720p.png b/res/images/hd720p.png new file mode 100644 index 0000000..1ea5d3e Binary files /dev/null and b/res/images/hd720p.png differ diff --git a/res/images/licence.txt b/res/images/licence.txt new file mode 100644 index 0000000..6a741db --- /dev/null +++ b/res/images/licence.txt @@ -0,0 +1,56 @@ +All png's are extracted from the skinnoopacity plugin by Louis Braun, which is +also subject to GPL v2 like vomp. + +Other artwork: + +vdrhires.png and +vdr.jpg is lifted from VDR's home page which states: +"Free project statement This is a FREE and completely non-commercial project. +Any information posted on these pages is freely available to anybody. All +source code published here is protected by the GNU general public licence." + +Note: +VDR Logo (c) by Jan Grell +Licensed under Creative Commons Licence. + +------------------------------------------------------------------ + +wallpaper.jpg and the high resolution version is actually blue-bend.jpg +from the KDE wallpapers. +It was taken from the debian package kdebase-data - the copyright +file is below. + +------------------------------------------------------------------ + +This package was debianized by Christopher L Cheney on +Tue, 16 Apr 2002 22:00:00 -0500. + +It was downloaded via CVS from cvs.kde.org + +Upstream Authors: Stephan Kulow and many others... + +License: + +All programs are either under the GPL or LGPL. On Debian systems, +the complete text of the GPL and LGPL licenses can be found in the +/usr/share/common-licenses/GPL and /usr/share/common-licenses/LGPL files. + +When in doubt, check the individual file, they should all have license +headings and other identifying marks. + +Artistic +-------- +kdcop, kdesu, klipper + +BSD +--- +drkonqi, kaddressbook, kicker, ksmserver, ksplash, kwin, legacyimport + +GPL +--- +kappfinder, kate, kcheckpass, kdeprint, kdm, kfind, khelpcenter, kmenuedit, +konqueror, konsole, kpager, kpersonalizer, kreadconfig, kstart, ksysguard, ktip + +LGPL +---- +kdebugdialog, kdesktop, khotkeys, kxkb, libkonq, nsplugins diff --git a/res/images/properties.png b/res/images/properties.png new file mode 100644 index 0000000..77b00a5 Binary files /dev/null and b/res/images/properties.png differ diff --git a/res/images/radio.png b/res/images/radio.png new file mode 100644 index 0000000..df66c4e Binary files /dev/null and b/res/images/radio.png differ diff --git a/res/images/recfolder.png b/res/images/recfolder.png new file mode 100644 index 0000000..3f8b4ce Binary files /dev/null and b/res/images/recfolder.png differ diff --git a/res/images/recording.png b/res/images/recording.png new file mode 100644 index 0000000..3213d84 Binary files /dev/null and b/res/images/recording.png differ diff --git a/res/images/recordings.png b/res/images/recordings.png new file mode 100644 index 0000000..d1f4902 Binary files /dev/null and b/res/images/recordings.png differ diff --git a/res/images/restart.png b/res/images/restart.png new file mode 100644 index 0000000..07b651b Binary files /dev/null and b/res/images/restart.png differ diff --git a/res/images/sd576i.png b/res/images/sd576i.png new file mode 100644 index 0000000..ddedc19 Binary files /dev/null and b/res/images/sd576i.png differ diff --git a/res/images/timers.png b/res/images/timers.png new file mode 100644 index 0000000..e6860ba Binary files /dev/null and b/res/images/timers.png differ diff --git a/res/images/tv.png b/res/images/tv.png new file mode 100644 index 0000000..32de8d4 Binary files /dev/null and b/res/images/tv.png differ diff --git a/res/images/txtoff.png b/res/images/txtoff.png new file mode 100644 index 0000000..0e37e99 Binary files /dev/null and b/res/images/txtoff.png differ diff --git a/res/images/txton.png b/res/images/txton.png new file mode 100644 index 0000000..4e692f8 Binary files /dev/null and b/res/images/txton.png differ diff --git a/res/images/vdr.jpg b/res/images/vdr.jpg new file mode 100644 index 0000000..37be1c9 Binary files /dev/null and b/res/images/vdr.jpg differ diff --git a/res/images/vdrhires.jpg b/res/images/vdrhires.jpg new file mode 100644 index 0000000..03145c3 Binary files /dev/null and b/res/images/vdrhires.jpg differ diff --git a/res/images/vdrhires.png b/res/images/vdrhires.png new file mode 100644 index 0000000..91fc814 Binary files /dev/null and b/res/images/vdrhires.png differ diff --git a/res/images/wallpaper720p.jpg b/res/images/wallpaper720p.jpg new file mode 100644 index 0000000..4f6eb56 Binary files /dev/null and b/res/images/wallpaper720p.jpg differ diff --git a/res/images/wallpaperNTSC.jpg b/res/images/wallpaperNTSC.jpg new file mode 100644 index 0000000..5df6cbe Binary files /dev/null and b/res/images/wallpaperNTSC.jpg differ diff --git a/res/images/wallpaperPAL.jpg b/res/images/wallpaperPAL.jpg new file mode 100644 index 0000000..ed56138 Binary files /dev/null and b/res/images/wallpaperPAL.jpg differ diff --git a/res/raspi-patches/fetch_libav.sh b/res/raspi-patches/fetch_libav.sh new file mode 100755 index 0000000..908c957 --- /dev/null +++ b/res/raspi-patches/fetch_libav.sh @@ -0,0 +1,12 @@ +#! /bin/bash +echo "Fetch libav from git" +cd .. +cd .. +#git clone git://git.libav.org/libav.git +cd libav +git checkout 5467742232c312b7d61dca7ac57447f728d8d6c9 +git apply ../vompclient-raspi/raspi-patches/libav_transcode.patch +echo "git fetch done. Now configure!" +./configure --enable-gpl --disable-everything --enable-decoder=mpeg_mpeg4 --enable-decoder=mpeg4 --enable-decoder=mpeg2video --enable-decoder=mpeg_xvmc --enable-decoder=mp2 --enable-decoder=mp3 --enable-decoder=ac3 --enable-decoder=eac3 --enable-encoder=mpeg4 --enable-avconv --enable-dct --enable-mdct --enable-rdft --enable-fft --enable-armv6 --enable-armv5te --enable-armvfp --enable-yasm +echo "Type make for making your local copy of libav, will take a long time!" + diff --git a/res/raspi-patches/libav_transcode.patch b/res/raspi-patches/libav_transcode.patch new file mode 100644 index 0000000..7873934 --- /dev/null +++ b/res/raspi-patches/libav_transcode.patch @@ -0,0 +1,1484 @@ +From a1960a00ad4c6f67917f5f4bfcbf739634958dd6 Mon Sep 17 00:00:00 2001 +From: Marten Richter +Date: Sun, 19 Aug 2012 13:58:58 +0200 +Subject: [PATCH] Add transcoding Mpeg2 to Mpeg4 code initial revision + +--- + libavcodec/Makefile | 2 + + libavcodec/allcodecs.c | 1 + + libavcodec/avcodec.h | 5 + + libavcodec/mpeg12.c | 82 +++- + libavcodec/mpeg4video.h | 5 + + libavcodec/mpeg4videodec.c | 2 +- + libavcodec/mpeg4videoenc.c | 32 +- + libavcodec/mpegvideo.c | 16 +- + libavcodec/mpegvideo.h | 6 + + libavcodec/mpegvideo_enc.c | 8 +- + libavcodec/mpegvideo_transcode.c | 888 ++++++++++++++++++++++++++++++++++++++ + libavcodec/transcode.h | 69 +++ + libavcodec/transcode_internal.h | 34 ++ + libavutil/pixfmt.h | 2 + + 14 files changed, 1138 insertions(+), 14 deletions(-) + create mode 100644 libavcodec/mpegvideo_transcode.c + create mode 100644 libavcodec/transcode.h + create mode 100644 libavcodec/transcode_internal.h + +diff --git a/libavcodec/Makefile b/libavcodec/Makefile +index 77126a6..46f1efc 100644 +--- a/libavcodec/Makefile ++++ b/libavcodec/Makefile +@@ -9,6 +9,7 @@ HEADERS = avcodec.h \ + vdpau.h \ + version.h \ + xvmc.h \ ++ transcode.h \ + + OBJS = allcodecs.o \ + audioconvert.o \ +@@ -264,6 +265,7 @@ OBJS-$(CONFIG_MPC7_DECODER) += mpc7.o mpc.o mpegaudiodec.o \ + OBJS-$(CONFIG_MPC8_DECODER) += mpc8.o mpc.o mpegaudiodec.o \ + mpegaudiodecheader.o mpegaudio.o \ + mpegaudiodata.o ++OBJS-$(CONFIG_MPEG_MPEG4_DECODER) += mpegvideo_transcode.o + OBJS-$(CONFIG_MPEG_XVMC_DECODER) += mpegvideo_xvmc.o + OBJS-$(CONFIG_MPEG1VIDEO_DECODER) += mpeg12.o mpeg12data.o \ + mpegvideo.o error_resilience.o +diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c +index cb08e33..00fc162 100644 +--- a/libavcodec/allcodecs.c ++++ b/libavcodec/allcodecs.c +@@ -146,6 +146,7 @@ void avcodec_register_all(void) + REGISTER_DECODER (MMVIDEO, mmvideo); + REGISTER_DECODER (MOTIONPIXELS, motionpixels); + REGISTER_DECODER (MPEG_XVMC, mpeg_xvmc); ++ REGISTER_DECODER (MPEG_MPEG4, mpeg_mpeg4); + REGISTER_ENCDEC (MPEG1VIDEO, mpeg1video); + REGISTER_ENCDEC (MPEG2VIDEO, mpeg2video); + REGISTER_ENCDEC (MPEG4, mpeg4); +diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h +index 2b70b96..0cbd733 100644 +--- a/libavcodec/avcodec.h ++++ b/libavcodec/avcodec.h +@@ -257,6 +257,7 @@ enum CodecID { + CODEC_ID_ZEROCODEC, + CODEC_ID_MSS1, + CODEC_ID_MSA1, ++ CODEC_ID_MPEG2VIDEO_MPEG4, + + /* various PCM "codecs" */ + CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs +@@ -696,6 +697,10 @@ typedef struct RcOverride{ + * Audio encoder supports receiving a different number of samples in each call. + */ + #define CODEC_CAP_VARIABLE_FRAME_SIZE 0x10000 ++/** ++ * Codec can export data for transcoding (AV). ++ */ ++#define CODEC_CAP_HWACCEL_TRANSCODE 0x20000 + + //The following defines may change, don't expect compatibility if you use them. + #define MB_TYPE_INTRA4x4 0x0001 +diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c +index c40649d..01133e5 100644 +--- a/libavcodec/mpeg12.c ++++ b/libavcodec/mpeg12.c +@@ -37,6 +37,7 @@ + #include "bytestream.h" + #include "vdpau_internal.h" + #include "xvmc_internal.h" ++#include "transcode_internal.h" + #include "thread.h" + + //#undef NDEBUG +@@ -1183,6 +1184,8 @@ static enum PixelFormat mpeg_get_pixelformat(AVCodecContext *avctx) + + if (avctx->xvmc_acceleration) + return avctx->get_format(avctx, pixfmt_xvmc_mpg2_420); ++ else if (avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) ++ return PIX_FMT_TRANSCODE; + else if (avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) { + if (avctx->codec_id == CODEC_ID_MPEG1VIDEO) + return PIX_FMT_VDPAU_MPEG1; +@@ -1289,7 +1292,8 @@ static int mpeg_decode_postinit(AVCodecContext *avctx) + // until then pix_fmt may be changed right after codec init + if (avctx->pix_fmt == PIX_FMT_XVMC_MPEG2_IDCT || + avctx->hwaccel || +- s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) ++ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU || ++ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) + if (avctx->idct_algo == FF_IDCT_AUTO) + avctx->idct_algo = FF_IDCT_SIMPLE; + +@@ -1305,8 +1309,14 @@ static int mpeg_decode_postinit(AVCodecContext *avctx) + quant_matrix_rebuild(s->chroma_intra_matrix, old_permutation, s->dsp.idct_permutation); + quant_matrix_rebuild(s->chroma_inter_matrix, old_permutation, s->dsp.idct_permutation); + ++ if (CONFIG_MPEG_MPEG4_DECODER && s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) { ++ if (ff_mpeg_transcode_decode_postinit(avctx)<0) ++ return -2; ++ } + s1->mpeg_enc_ctx_allocated = 1; + } ++ ++ + return 0; + } + +@@ -1916,7 +1926,8 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict) + + ff_MPV_frame_end(s); + +- if (s->pict_type == AV_PICTURE_TYPE_B || s->low_delay) { ++ if (s->pict_type == AV_PICTURE_TYPE_B || s->low_delay ++ || (s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE)) {//no reordering for transcoding + *pict = s->current_picture_ptr->f; + ff_print_debug_info(s, pict); + } else { +@@ -2034,7 +2045,8 @@ static int vcr2_init_sequence(AVCodecContext *avctx) + avctx->hwaccel = ff_find_hwaccel(avctx->codec->id, avctx->pix_fmt); + + if (avctx->pix_fmt == PIX_FMT_XVMC_MPEG2_IDCT || avctx->hwaccel || +- s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) ++ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU || ++ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) + if (avctx->idct_algo == FF_IDCT_AUTO) + avctx->idct_algo = FF_IDCT_SIMPLE; + +@@ -2262,7 +2274,8 @@ static int decode_chunks(AVCodecContext *avctx, + ff_vdpau_mpeg_picture_complete(s2, buf, buf_size, s->slice_count); + + if (slice_end(avctx, picture)) { +- if (s2->last_picture_ptr || s2->low_delay) //FIXME merge with the stuff in mpeg_decode_slice ++ if (s2->last_picture_ptr || s2->low_delay || ++ (avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) ) //FIXME merge with the stuff in mpeg_decode_slice + *data_size = sizeof(AVPicture); + } + } +@@ -2528,6 +2541,67 @@ AVCodec ff_mpeg2video_decoder = { + .profiles = NULL_IF_CONFIG_SMALL(mpeg2_video_profiles), + }; + ++#if CONFIG_MPEG_MPEG4_DECODER ++ ++static av_cold int mpeg_transcode_decode_init(AVCodecContext *avctx) ++{ ++ Mpeg1Context *s = avctx->priv_data; ++ MpegEncContext *s2; ++ ++ ++ if (avctx->active_thread_type & FF_THREAD_SLICE) ++ return -1; ++ if (!(avctx->slice_flags & SLICE_FLAG_CODED_ORDER)) ++ return -1; ++ mpeg_decode_init(avctx); ++ ++ avctx->pix_fmt = PIX_FMT_TRANSCODE; ++ ++ s->mpeg_enc_ctx.transcode_context = (void*) av_mallocz(sizeof(MpegEncContext)); ++ if (!s->mpeg_enc_ctx.transcode_context) { ++ return AVERROR(ENOMEM); ++ } ++ s2=(MpegEncContext*)s->mpeg_enc_ctx.transcode_context; ++ s2->current_picture_ptr =&s2->current_picture; ++ ++ ++ ++ s->mpeg_enc_ctx.transcode = 1; ++ ++ return 0; ++} ++ ++static int mpeg_transcode_decode_end(AVCodecContext *avctx) ++{ ++ MpegEncContext *s2; ++ Mpeg1Context *s = avctx->priv_data; ++ s2=(MpegEncContext*)s->mpeg_enc_ctx.transcode_context; ++ ++ if (s2->current_picture_ptr) ++ ff_free_picture(s2,&s2->current_picture); ++ if (s2) ++ av_free(s2); ++ ++ return mpeg_decode_end(avctx); ++} ++ ++ ++AVCodec ff_mpeg_mpeg4_decoder = { ++ .name = "mpegvideo_mpeg4", ++ .type = AVMEDIA_TYPE_VIDEO, ++ .id = CODEC_ID_MPEG2VIDEO_MPEG4, ++ .priv_data_size = sizeof(Mpeg1Context), ++ .init = mpeg_transcode_decode_init, ++ .close = mpeg_transcode_decode_end, ++ .decode = mpeg_decode_frame, ++ .capabilities = CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED| CODEC_CAP_HWACCEL_TRANSCODE | CODEC_CAP_DELAY, ++ .flush = flush, ++ .long_name = NULL_IF_CONFIG_SMALL("MPEG-1/2 video to MPEG-4 part 2 transcoder for hardware accelaration"), ++}; ++ ++#endif ++ ++ + #if CONFIG_MPEG_XVMC_DECODER + static av_cold int mpeg_mc_decode_init(AVCodecContext *avctx) + { +diff --git a/libavcodec/mpeg4video.h b/libavcodec/mpeg4video.h +index 64c0243..a8963df 100644 +--- a/libavcodec/mpeg4video.h ++++ b/libavcodec/mpeg4video.h +@@ -88,6 +88,7 @@ void ff_mpeg4_encode_mb(MpegEncContext *s, + void ff_mpeg4_pred_ac(MpegEncContext * s, DCTELEM *block, int n, + int dir); + void ff_set_mpeg4_time(MpegEncContext * s); ++void ff_set_frame_distances(MpegEncContext * s); + void ff_mpeg4_encode_picture_header(MpegEncContext *s, int picture_number); + + int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb); +@@ -102,6 +103,10 @@ int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s); + int ff_mpeg4_decode_video_packet_header(MpegEncContext *s); + void ff_mpeg4_init_direct_mv(MpegEncContext *s); + ++#if CONFIG_MPEG_MPEG4_DECODER ++void ff_mpeg4_transcode_init_tables(MpegEncContext* s); ++#endif ++ + /** + * + * @return the mb_type +diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c +index 3fcc6d0..d588f57 100644 +--- a/libavcodec/mpeg4videodec.c ++++ b/libavcodec/mpeg4videodec.c +@@ -863,7 +863,7 @@ static inline int mpeg4_decode_block(MpegEncContext * s, DCTELEM * block, + dc_pred_dir= (s->pred_dir_table[s->mb_x + s->mb_y*s->mb_stride]<=0); + + /* nothing to do if this MB was skipped in the next P Frame */ +- if (s->next_picture.f.mbskip_table[s->mb_y * s->mb_stride + s->mb_x]) { //FIXME avoid DCT & ... ++ if (!(CONFIG_MPEG_MPEG4_DECODER && s->transcode) && ++ s->next_picture.f.mbskip_table[s->mb_y * s->mb_stride + s->mb_x]) { //FIXME avoid DCT & ... + s->skip_count++; + s->mv[0][0][0]= + s->mv[0][0][1]= +@@ -614,10 +615,11 @@ void ff_mpeg4_encode_mb(MpegEncContext * s, + s->p_tex_bits+= get_bits_diff(s); + } + +- }else{ /* s->pict_type==AV_PICTURE_TYPE_B */ ++ }else{ /* s->pict_type==AV_PICTURE_TYPE_P */ + cbp= get_p_cbp(s, block, motion_x, motion_y); + +- if ((cbp | motion_x | motion_y | s->dquant) == 0 && s->mv_type==MV_TYPE_16X16) { ++ if ((cbp | motion_x | motion_y | s->dquant) == 0 && s->mv_type==MV_TYPE_16X16 ++ && !(CONFIG_MPEG_MPEG4_DECODER && s->transcode) ) { + /* check if the B frames can skip it too, as we must skip it if we skip here + why didn't they just compress the skip-mb bits instead of reusing them ?! */ + if(s->max_b_frames>0){ +@@ -860,6 +862,8 @@ static void mpeg4_encode_gop_header(MpegEncContext * s){ + time = s->current_picture_ptr->f.pts; + if(s->reordered_input_picture[1]) + time = FFMIN(time, s->reordered_input_picture[1]->f.pts); ++ if (CONFIG_MPEG_MPEG4_DECODER && s->transcode) ++ time = FFMIN(time, s->last_picture.f.pts); + time= time*s->avctx->time_base.num; + + seconds= time/s->avctx->time_base.den; +@@ -1263,6 +1267,28 @@ static av_cold int encode_init(AVCodecContext *avctx) + return 0; + } + ++#if CONFIG_MPEG_MPEG4_DECODER ++ ++void ff_mpeg4_transcode_init_tables(MpegEncContext* s) ++{ ++ init_uni_dc_tab(); ++ ff_init_rl(&ff_mpeg4_rl_intra, ff_mpeg4_static_rl_table_store[0]); ++ init_uni_mpeg4_rl_tab(&ff_mpeg4_rl_intra, uni_mpeg4_intra_rl_bits, uni_mpeg4_intra_rl_len); ++ init_uni_mpeg4_rl_tab(&ff_h263_rl_inter, uni_mpeg4_inter_rl_bits, uni_mpeg4_inter_rl_len); ++ s->min_qcoeff= -2048; ++ s->max_qcoeff= 2047; ++ s->inter_ac_vlc_length = uni_mpeg4_inter_rl_len; ++ s->inter_ac_vlc_last_length= uni_mpeg4_inter_rl_len + 128*64; ++ s->luma_dc_vlc_length= uni_DCtab_lum_len; ++ s->ac_esc_length= 7+2+1+6+1+12+1; ++ s->y_dc_scale_table= ff_mpeg4_y_dc_scale_table; ++ s->c_dc_scale_table= ff_mpeg4_c_dc_scale_table; ++ ++ ++} ++ ++#endif ++ + void ff_mpeg4_init_partitions(MpegEncContext *s) + { + uint8_t *start= put_bits_ptr(&s->pb); +diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c +index 574893e..8f25689 100644 +--- a/libavcodec/mpegvideo.c ++++ b/libavcodec/mpegvideo.c +@@ -38,6 +38,7 @@ + #include "msmpeg4.h" + #include "faandct.h" + #include "xvmc_internal.h" ++#include "transcode_internal.h" + #include "thread.h" + #include + +@@ -379,7 +380,7 @@ fail: // for the FF_ALLOCZ_OR_GOTO macro + /** + * Deallocate a picture. + */ +-static void free_picture(MpegEncContext *s, Picture *pic) ++void ff_free_picture(MpegEncContext *s, Picture *pic) + { + int i; + +@@ -996,7 +997,7 @@ void ff_MPV_common_end(MpegEncContext *s) + + if (s->picture && !s->avctx->internal->is_copy) { + for (i = 0; i < s->picture_count; i++) { +- free_picture(s, &s->picture[i]); ++ ff_free_picture(s, &s->picture[i]); + } + } + av_freep(&s->picture); +@@ -1353,6 +1354,9 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) + + if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) + return ff_xvmc_field_start(s, avctx); ++ if (CONFIG_MPEG_MPEG4_DECODER && ++ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) ++ return ff_transcode_start_picture(s, avctx); + + return 0; + } +@@ -1366,6 +1370,9 @@ void ff_MPV_frame_end(MpegEncContext *s) + // just to make sure that all data is rendered. + if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) { + ff_xvmc_field_end(s); ++ } else if (CONFIG_MPEG_MPEG4_DECODER && ++ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) { ++ ff_transcode_end_picture(s); + } else if ((s->error_count || s->encoding) && + !s->avctx->hwaccel && + !(s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) && +@@ -1941,6 +1948,11 @@ void MPV_decode_mb_internal(MpegEncContext *s, DCTELEM block[12][64], + ff_xvmc_decode_mb(s);//xvmc uses pblocks + return; + } ++ if ( CONFIG_MPEG_MPEG4_DECODER && ++ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE){ ++ ff_transcode_decode_mb(s); //transcode does no real decoding ++ return; ++ } + + if(s->avctx->debug&FF_DEBUG_DCT_COEFF) { + /* save DCT coefficients */ +diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h +index f5b20e6..8d37178 100644 +--- a/libavcodec/mpegvideo.h ++++ b/libavcodec/mpegvideo.h +@@ -702,6 +702,9 @@ typedef struct MpegEncContext { + + /* temp buffers for rate control */ + float *cplx_tab, *bits_tab; ++ /* transcode, encoding context: a pointer to another MpegEncContext*/ ++ void *transcode_context; ++ int transcode; // 0 no transcoding, 1 activated + } MpegEncContext; + + #define REBASE_PICTURE(pic, new_ctx, old_ctx) (pic ? \ +@@ -745,6 +748,7 @@ void ff_MPV_common_end(MpegEncContext *s); + void ff_MPV_decode_mb(MpegEncContext *s, DCTELEM block[12][64]); + int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx); + void ff_MPV_frame_end(MpegEncContext *s); ++void ff_MPV_encode_defaults(MpegEncContext *s); + int ff_MPV_encode_init(AVCodecContext *avctx); + int ff_MPV_encode_end(AVCodecContext *avctx); + int ff_MPV_encode_picture(AVCodecContext *avctx, AVPacket *pkt, +@@ -787,6 +791,8 @@ void ff_copy_picture(Picture *dst, Picture *src); + */ + int ff_alloc_picture(MpegEncContext *s, Picture *pic, int shared); + ++void ff_free_picture(MpegEncContext *s, Picture *pic); ++ + extern const enum PixelFormat ff_pixfmt_list_420[]; + extern const enum PixelFormat ff_hwaccel_pixfmt_list_420[]; + +diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c +index f88df92..a35c292 100644 +--- a/libavcodec/mpegvideo_enc.c ++++ b/libavcodec/mpegvideo_enc.c +@@ -256,7 +256,7 @@ static void update_duplicate_context_after_me(MpegEncContext *dst, + * Set the given MpegEncContext to defaults for encoding. + * the changed fields will not depend upon the prior state of the MpegEncContext. + */ +-static void MPV_encode_defaults(MpegEncContext *s) ++void ff_MPV_encode_defaults(MpegEncContext *s) + { + int i; + ff_MPV_common_defaults(s); +@@ -275,7 +275,7 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx) + int i; + int chroma_h_shift, chroma_v_shift; + +- MPV_encode_defaults(s); ++ ff_MPV_encode_defaults(s); + + switch (avctx->codec_id) { + case CODEC_ID_MPEG2VIDEO: +@@ -3085,7 +3085,7 @@ static int estimate_qp(MpegEncContext *s, int dry_run){ + } + + /* must be called before writing the header */ +-static void set_frame_distances(MpegEncContext * s){ ++void ff_set_frame_distances(MpegEncContext * s){ + assert(s->current_picture_ptr->f.pts != AV_NOPTS_VALUE); + s->time = s->current_picture_ptr->f.pts * s->avctx->time_base.num; + +@@ -3114,7 +3114,7 @@ static int encode_picture(MpegEncContext *s, int picture_number) + /* we need to initialize some time vars before we can encode b-frames */ + // RAL: Condition added for MPEG1VIDEO + if (s->codec_id == CODEC_ID_MPEG1VIDEO || s->codec_id == CODEC_ID_MPEG2VIDEO || (s->h263_pred && !s->msmpeg4_version)) +- set_frame_distances(s); ++ ff_set_frame_distances(s); + if(CONFIG_MPEG4_ENCODER && s->codec_id == CODEC_ID_MPEG4) + ff_set_mpeg4_time(s); + +diff --git a/libavcodec/mpegvideo_transcode.c b/libavcodec/mpegvideo_transcode.c +new file mode 100644 +index 0000000..e2e56e1 +--- /dev/null ++++ b/libavcodec/mpegvideo_transcode.c +@@ -0,0 +1,888 @@ ++/* ++ * Transcoder ++ * Copyright (c) 2012 Marten Richter ++ * ++ * For the code took from the encoder: ++ * Copyright (c) 2000,2001 Fabrice Bellard ++ * Copyright (c) 2002-2004 Michael Niedermayer ++ * 4MV & hq & B-frame encoding stuff by Michael Niedermayer ++ * and probably many others see the git commit notes for details ++ * ++ * This file is part of Libav. ++ * ++ * Libav is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * Libav is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with Libav; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include "avcodec.h" ++#include "dsputil.h" ++#include "mpegvideo.h" ++#include "mpegvideo_common.h" ++#include "mpeg4video.h" ++ ++#include "mpeg12.h" ++#include "h263.h" ++ ++#undef NDEBUG ++#include ++ ++#include "transcode.h" ++#include "transcode_internal.h" ++ ++int transcode_qmul_table[32]; ++ ++/** ++ * initialise the encoding contexts, after the properties of the incoming stream are known ++ * TODO: remove unnecessary inits ++ */ ++int ff_mpeg_transcode_decode_postinit(AVCodecContext* avctx) ++{ ++ // Now init the encode context ++ Mpeg1Context *s2; ++ MpegEncContext *s; ++ int i; ++ int chroma_h_shift, chroma_v_shift; ++ int savetimebaseden; ++ ++ ++ s2 = avctx->priv_data; ++ s = s2->mpeg_enc_ctx.transcode_context; ++ ++ ff_MPV_encode_defaults(s); ++ s->codec_id=CODEC_ID_MPEG4; ++ ++ s->input_picture_number = 0; ++ s->transcode = 1; ++ avctx->qmin = 1; ++ ++ ++ s->bit_rate = avctx->bit_rate; ++ s->width = avctx->width+32; ++ s->height = avctx->height; ++ s->gop_size = avctx->gop_size; ++ s->avctx = avctx; ++ s->flags = avctx->flags; ++ s->flags2 = avctx->flags2; ++ s->max_b_frames = 100; // we have b frames ++ //s->codec_id = avctx->codec->id; ++ s->strict_std_compliance = avctx->strict_std_compliance; ++ s->quarter_sample = 0; ++ s->mpeg_quant = 0; ++ s->rtp_mode = 0; //we need it for qscale ++ s->vol_sprite_usage=0; ++ s->intra_dc_precision = avctx->intra_dc_precision; ++ s->user_specified_pts = AV_NOPTS_VALUE; ++ ++ if (s->gop_size <= 1) { ++ s->intra_only = 1; ++ s->gop_size = 12; ++ } else { ++ s->intra_only = 0; ++ } ++ ++ s->me_method = avctx->me_method; ++ s->adaptive_quant = (s->avctx->lumi_masking || ++ s->avctx->dark_masking || ++ s->avctx->temporal_cplx_masking || ++ s->avctx->spatial_cplx_masking || ++ s->avctx->p_masking || ++ s->avctx->border_masking || ++ (s->mpv_flags & FF_MPV_FLAG_QP_RD)) && ++ !s->fixed_qscale; ++ s->loop_filter = 0; //no loop for mpeg4 ++ ++ if (s->mpeg_quant || s->codec_id == CODEC_ID_MPEG1VIDEO || ++ s->codec_id == CODEC_ID_MPEG2VIDEO || s->codec_id == CODEC_ID_MJPEG) { ++ // (a + x * 3 / 8) / x ++ s->intra_quant_bias = 3 << (QUANT_BIAS_SHIFT - 3); ++ s->inter_quant_bias = 0; ++ } else { ++ s->intra_quant_bias = 0; ++ // (a - x / 4) / x ++ s->inter_quant_bias = -(1 << (QUANT_BIAS_SHIFT - 2)); ++ } ++ ++ avcodec_get_chroma_sub_sample(PIX_FMT_YUV422P, &chroma_h_shift, ++ &chroma_v_shift); ++ if (/*avctx->codec_id == CODEC_ID_MPEG4 &&*/ ++ s->avctx->time_base.den > (1 << 16) - 1) ++ { ++ av_log(avctx, AV_LOG_ERROR, ++ "timebase %d/%d not supported by MPEG 4 standard, " ++ "the maximum admitted value for the timebase denominator " ++ "is %d\n", s->avctx->time_base.num, s->avctx->time_base.den, ++ (1 << 16) - 1); ++ return -1; ++ } ++ s->time_increment_bits = av_log2(s->avctx->time_base.den - 1) + 1; ++ ++ // mpeg4 paramter ++ s->out_format = FMT_H263; ++ s->h263_pred = 1; ++ s->unrestricted_mv = 1; //does not really matter ++ s->low_delay = s->max_b_frames ? 0 : 1; ++ avctx->delay = s->low_delay ? 0 : (s->max_b_frames + 1); ++ avctx->has_b_frames = !s->low_delay; ++ ++ s->encoding = 1; ++ s->progressive_frame = ++ s->progressive_sequence = !(avctx->flags & (CODEC_FLAG_INTERLACED_DCT | ++ CODEC_FLAG_INTERLACED_ME) || ++ s->alternate_scan); ++ /* init */ ++ if (ff_MPV_common_init(s) < 0) ++ return -1; ++ ++ if (!s->dct_quantize) ++ s->dct_quantize = ff_dct_quantize_c; ++ /* if (!s->denoise_dct) ++ s->denoise_dct = denoise_dct_c; ++ s->fast_dct_quantize = s->dct_quantize; ++ if (avctx->trellis) ++ s->dct_quantize = dct_quantize_trellis_c;*/ ++ ++ ++ s->quant_precision = 5; ++ ++ ff_set_cmp(&s->dsp, s->dsp.ildct_cmp, s->avctx->ildct_cmp); ++ ff_set_cmp(&s->dsp, s->dsp.frame_skip_cmp, s->avctx->frame_skip_cmp); ++ ++ if (CONFIG_H263_ENCODER && s->out_format == FMT_H263) ++ ff_h263_encode_init(s); ++ ++ /* init q matrix */ ++ for (i = 0; i < 64; i++) { ++ int j = s->dsp.idct_permutation[i]; ++ int j2 = s2->mpeg_enc_ctx.dsp.idct_permutation[i]; ++ if (/*CONFIG_MPEG4_ENCODER && s->codec_id == CODEC_ID_MPEG4 && */ ++ s->mpeg_quant) { ++ s->intra_matrix[j] = s2->mpeg_enc_ctx.intra_matrix[j2]; ++ s->inter_matrix[j] = s2->mpeg_enc_ctx.inter_matrix[j2]; ++ } else if (s->out_format == FMT_H263 || s->out_format == FMT_H261) { ++ s->intra_matrix[j] = ++ s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; ++ } else { ++ /* mpeg1/2 */ ++ s->intra_matrix[j] = ff_mpeg1_default_intra_matrix[i]; ++ s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; ++ } ++ ++ } ++ ff_convert_matrix(&s->dsp, s->q_intra_matrix, s->q_intra_matrix16, ++ s->intra_matrix, s->intra_quant_bias, avctx->qmin, ++ 31, 1); ++ ff_convert_matrix(&s->dsp, s->q_inter_matrix, s->q_inter_matrix16, ++ s->inter_matrix, s->inter_quant_bias, avctx->qmin, ++ 31, 0); ++ ++ ff_mpeg4_transcode_init_tables(s); ++ for (i=1;i<32;i++) { ++ transcode_qmul_table[i]=(1<current_picture, 1); ++ ++} ++ ++int ff_transcode_start_picture(MpegEncContext *dec, AVCodecContext *avctx) ++{ ++ Mpeg1Context *s2; ++ MpegEncContext *s; ++ int i; ++ struct transcode_pix_fmt *render = (struct transcode_pix_fmt*)dec->current_picture.f.data[0]; ++ s2 = dec->avctx->priv_data; ++ s = s2->mpeg_enc_ctx.transcode_context; ++ ++ assert(avctx); ++ if (dec->picture_structure != PICT_FRAME) ++ { ++ av_log(avctx, AV_LOG_ERROR, "field mode is not supported %d\n",dec->picture_structure); ++ } ++ ++ if (!render || render->transcode_id != AV_TRANSCODE_ID || ++ !render->packet.data || !render->packet.size ) { ++ av_log(avctx, AV_LOG_ERROR, ++ "Render token doesn't look as expected.\n"); ++ return -1; // make sure that this is a transcode packet ++ } ++ ++ ++ s->input_picture_number=s->input_picture_number+1; ++ ++ for(i=0; i<3; i++){ ++ /* init last dc values */ ++ /* note: quant matrix value (8) is implied here */ ++ s->last_dc[i] = 128 << s->intra_dc_precision; ++ ++ s->current_picture.f.error[i] = 0; ++ } ++ s->mb_skip_run = 0; ++ memset(s->last_mv, 0, sizeof(s->last_mv)); ++ ++ s->last_mv_dir = 0; ++ ++ ++ ++ //now init the put bit contexts ++ ++ s->slice_context_count=1; ++ init_put_bits(&s->pb, render->packet.data, render->packet.size); ++ ++ //ff_mpeg4_transcode_write_picture_headers(dec,avctx); //moved to slice decoding ++ return 0; ++} ++ ++ ++ ++ ++void ff_transcode_end_picture(MpegEncContext *dec) ++{ ++ Mpeg1Context *s2; ++ MpegEncContext *s; ++ struct transcode_pix_fmt *render; ++ s2 = dec->avctx->priv_data; ++ s = s2->mpeg_enc_ctx.transcode_context; ++ ff_mpeg4_stuffing(&s->pb); ++ avpriv_align_put_bits(&s->pb); ++ flush_put_bits(&s->pb); ++ ++ render = (struct transcode_pix_fmt*)dec->current_picture.f.data[0]; ++ render->packet.size=put_bits_count(&s->pb)/8; ++ ++ ++ ++} ++ ++//copy from mpegvideo_enc.c fix me ++ ++static inline void clip_coeffs(MpegEncContext *s, DCTELEM *block, ++ int last_index) ++{ ++ int i; ++ const int maxlevel = s->max_qcoeff; ++ const int minlevel = s->min_qcoeff; ++ int overflow = 0; ++ ++ if (s->mb_intra) { ++ i = 1; // skip clipping of intra dc ++ } else ++ i = 0; ++ ++ for (; i <= last_index; i++) { ++ const int j = s->intra_scantable.scantable[i]; ++ int level = block[j]; ++ ++ if (level > maxlevel) { ++ level = maxlevel; ++ overflow++; ++ } else if (level < minlevel) { ++ level = minlevel; ++ overflow++; ++ } ++ ++ block[j] = level; ++ } ++ ++ if (overflow && s->avctx->mb_decision == FF_MB_DECISION_SIMPLE) ++ av_log(s->avctx, AV_LOG_INFO, ++ "warning, clipping %d dct coefficients to %d..%d\n", ++ overflow, minlevel, maxlevel); ++} ++ ++ ++static inline int quantize_emulated_intra_c(MpegEncContext *s, ++ DCTELEM *block, int n, ++ int qscale,int dec_last_index, ++ int *overflow) ++{ ++ int i, j, level, last_non_zero, q, start_i; ++ const uint8_t *scantable= s->intra_scantable.scantable; ++ int bias; ++ int qmul; ++ int max=0; ++ unsigned int threshold1, threshold2; ++ ++ ++ //qmul=(1<=0) ++ block[0] = (block[0] + (q >> 1)) / q; ++ else ++ block[0] =-( (-block[0] + (q >> 1)) / q); ++ ++ level=block[0]; ++ if (level>=0) { ++ level=((level<<1)+1)*qscale-1+(qscale&1)+1024; ++ } else { ++ level=-((((-level)<<1)+1)*qscale-1+(qscale&1))+1024; ++ } ++ ++ max=block[0]; ++ start_i = 1; ++ ++ if (block[0]) last_non_zero = 0; ++ else last_non_zero=-1; ++ bias= s->inter_quant_bias<<(QMAT_SHIFT - QUANT_BIAS_SHIFT); ++ ++ threshold1= (1<=start_i;i--) { ++ j = scantable[i]; ++ level = block[j] * qmul; ++ if(((unsigned)(level+threshold1))>threshold2){ ++ last_non_zero = i; ++ break; ++ }else{ ++ block[j]=0; ++ } ++ } ++ ++ for(i=start_i; i<=last_non_zero; i++) { ++ j = scantable[i]; ++ level = block[j] * qmul; ++ if(((unsigned)(level+threshold1))>threshold2){ ++ if(level>0){ ++ level= (bias + level)>>(QMAT_SHIFT); ++ block[j]= level; ++ }else{ ++ level= (bias - level)>>(QMAT_SHIFT); ++ block[j]= -level; ++ } ++ max |=level; ++ }else{ ++ block[j]=0; ++ } ++ } ++ *overflow= s->max_qcoeff < max; //overflow might have happened ++ ++ ++ return last_non_zero; ++} ++ ++ ++ ++static inline int quantize_c(MpegEncContext *s, ++ DCTELEM *block, int n, ++ int qscale,int dec_last_index, ++ int *overflow) ++{ ++ int i, j, level, last_non_zero, q, start_i; ++ const uint8_t *scantable= s->intra_scantable.scantable; ++ int bias; ++ int qmul; ++ int max=0; ++ unsigned int threshold1, threshold2; ++ ++ ++ //qmul=(1<mb_intra) { ++ if (!s->h263_aic) { ++ if (n < 4) ++ q = s->y_dc_scale; ++ else ++ q = s->c_dc_scale; ++ // q = q << 3; ++ } else ++ /* For AIC we skip quant/dequant of INTRADC */ ++ q = 1;// << 3; ++ ++ /* note: block[0] is assumed to be positive */ ++ block[0] = (block[0] + (q >> 1)) / q; ++ start_i = 1; ++ last_non_zero = 0; ++ bias= s->intra_quant_bias<<(QMAT_SHIFT - QUANT_BIAS_SHIFT); ++ } else { ++ start_i = 0; ++ last_non_zero = -1; ++ bias= s->inter_quant_bias<<(QMAT_SHIFT - QUANT_BIAS_SHIFT); ++ } ++ threshold1= (1<=start_i;i--) { ++ j = scantable[i]; ++ level = block[j] * qmul; ++ if(((unsigned)(level+threshold1))>threshold2){ ++ last_non_zero = i; ++ break; ++ }else{ ++ block[j]=0; ++ } ++ } ++ ++ for(i=start_i; i<=last_non_zero; i++) { ++ j = scantable[i]; ++ level = block[j] * qmul; ++ ++ // if( bias+level >= (1<= (1<threshold2){ ++ if(level>0){ ++ level= (bias + level)>>(QMAT_SHIFT); ++ block[j]= level; ++ }else{ ++ level= (bias - level)>>(QMAT_SHIFT); ++ block[j]= -level; ++ } ++ max |=level; ++ }else{ ++ block[j]=0; ++ } ++ } ++ *overflow= s->max_qcoeff < max; //overflow might have happened ++ ++ ++ ++ return last_non_zero; ++} ++ ++#define ZEROS8 0,0,0,0,0,0,0,0 ++#define ZEROS64 ZEROS8,ZEROS8,ZEROS8,ZEROS8,ZEROS8,ZEROS8,ZEROS8,ZEROS8 ++ ++ ++ ++static inline void add_zero_mb(MpegEncContext *s) ++{ ++ DCTELEM zero_block[6][64]={{ZEROS64},{ZEROS64},{ZEROS64},{ZEROS64},{ZEROS64},{ZEROS64}}; ++ const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; ++ ++ s->dquant=0; ++ ff_update_block_index(s); ++ ++ if (s->pict_type==AV_PICTURE_TYPE_I) { ++ int q; ++ s->mb_intra=1; ++ if (s->qscale>4){ // this is not good for quantization ++ s->dquant=-2; ++ s->qscale=s->qscale-2; ++ ff_set_qscale(s, s->qscale); ++ } ++ q=s->y_dc_scale; ++ zero_block[0][0]=zero_block[1][0]= ++ zero_block[2][0]=zero_block[3][0]=(1024+(q>>1))/q; ++ q=s->c_dc_scale; ++ zero_block[4][0]=zero_block[5][0]=(1024+(q>>1))/q; ++ s->block_last_index[0]=s->block_last_index[1]= ++ s->block_last_index[2]=s->block_last_index[3]= ++ s->block_last_index[4]=s->block_last_index[5]=0; ++ ++ if ( (s->h263_pred || s->h263_aic)) ++ s->mbintra_table[mb_xy]=1; ++ } else { ++ s->mb_intra=0; ++ s->mv_type=MV_TYPE_16X16; ++ s->mv_dir=MV_DIR_FORWARD; ++ s->mv[0][0][0]=0; ++ s->mv[0][0][1]=0; ++ if ((s->h263_pred || s->h263_aic)) { ++ ++ if(s->mbintra_table[mb_xy]) ++ ff_clean_intra_table_entries(s); ++ } else { ++ s->last_dc[0] = ++ s->last_dc[1] = ++ s->last_dc[2] = 128 << s->intra_dc_precision; ++ } ++ s->block_last_index[0]=s->block_last_index[1]= ++ s->block_last_index[2]=s->block_last_index[3]= ++ s->block_last_index[4]=s->block_last_index[5]=-1; ++ ++ } ++ ++ ++ ++ ff_mpeg4_encode_mb(s, zero_block, 0, 0); ++ ff_h263_update_motion_val(s); ++} ++ ++void ff_transcode_decode_mb(MpegEncContext *dec) ++{ ++ Mpeg1Context *s2; ++ MpegEncContext *s; ++ int dquant; ++ int i; ++ int dir; ++ ++ int motion_x; ++ int motion_y; ++ int savetimebaseden; ++ int mb_xy; ++ int emulate=0; ++ s2 = dec->avctx->priv_data; ++ s = s2->mpeg_enc_ctx.transcode_context; ++ ++ s->mb_y = dec->mb_y; ++ ++ s->mb_x = dec->mb_x+1; ++ ++ savetimebaseden=s->avctx->time_base.den;//the way how mpeg2 and mpeg4 handle interlaced video differs ++ if (!s->progressive_sequence) { ++ s->avctx->time_base.den=s->avctx->time_base.den>>1; ++ } ++ ++ ++ ++ if (dec->mb_x==0 && dec->mb_y==0) { // a bit ugly but qscale is not set before ++ s->time_increment_bits = av_log2(s->avctx->time_base.den - 1) + 1; ++ ff_mpeg4_transcode_write_picture_headers(dec,dec->avctx); ++ ++ } ++ ++ ++ ++ ++ ++ if (s->mb_x==1) { ++ s->first_slice_line=s->mb_y==0; ++ ++ s->mb_x = 0; ++ ff_init_block_index(s); //necessary for prediction ++ ++ add_zero_mb(s); ++ s->mb_x = 1; ++ } ++ mb_xy= s->mb_y * s->mb_stride + s->mb_x; ++ ++ ++ ++ // the decoder must be updated, important we assume mpeg12 as input ++ if (!dec->mb_intra) { ++ dec->last_dc[0] = ++ dec->last_dc[1] = ++ dec->last_dc[2] = 128 << dec->intra_dc_precision; ++ } ++ ++ ++ dquant=-s->qscale+(dec->qscale>>1 | 1); ++ if (dquant>2) dquant=2; ++ else if (dquant<-2) dquant=-2; ++ ++ if (s->pict_type == AV_PICTURE_TYPE_B) //b frames do not support dquant=1 or dquant=-1 ++ { ++ if (dquant==1) dquant=0; // always try to quantize better not worss ++ else if (dquant==-1) dquant=-2; ++ } ++ ++ s->qscale=s->qscale+dquant; ++ ++ if (dquant) ff_set_qscale(s, s->qscale); ++ s->dquant = dquant; ++ ++ ++ ++ ++ ++ //to do convert handling ++ ++ ++ s->interlaced_dct = dec->interlaced_dct; ++ s->mb_intra = dec->mb_intra; ++ if (!s->mb_intra) { ++ s->mv_dir = dec->mv_dir; ++ s->mv_type = dec->mv_type; ++ for (dir=0; dir < 2; dir++) { ++ for (i=0; i < 2; i++) { ++ s->mv[dir][i][0] = dec->mv[dir][i][0]; ++ s->mv[dir][i][1] = dec->mv[dir][i][1]; ++ s->field_select[dir][i] = dec->field_select[dir][i]; ++ } ++ } ++ motion_x = motion_y = 0; ++ if (s->mv_type != MV_TYPE_FIELD) { ++ if (s->mv_dir == MV_DIR_FORWARD) { ++ motion_x = s->mv[0][0][0]; ++ motion_y = s->mv[0][0][1]; ++ } else if (s->mv_dir == MV_DIR_BACKWARD) { ++ motion_x = s->mv[1][0][0]; ++ motion_y = s->mv[1][0][1]; ++ } // set motion also in direct mode TODO ++ } ++ } ++ ++ if (s->pict_type == AV_PICTURE_TYPE_B){ ++ if (s->mb_intra) { ++ ++ // TODO Emulate intra blocks ++ //but first set to non intra will break dc prediction otherwise ++ s->mb_intra=0; ++ s->mv_type=MV_TYPE_16X16; ++ ++ ++ if (s->b_code<=s->f_code) { ++ s->mv_dir = MV_DIR_FORWARD; ++ motion_y = s->mv[0][0][1]=0; ++ if (s->mb_x<(s->mb_width>>1)) { ++ motion_x = s->mv[0][0][0]=-s->mb_x<<5; ++ } else { ++ motion_x = s->mv[0][0][0]=(s->mb_width-s->mb_x)<<5; ++ } ++ } else { ++ motion_y = s->mv[1][0][1]=0; ++ s->mv_dir = MV_DIR_BACKWARD; ++ if (s->mb_x<(s->mb_width>>1)) { ++ motion_x = s->mv[1][0][0]=-s->mb_x<<5; ++ } else { ++ motion_x = s->mv[1][0][0]=(s->mb_width-s->mb_x)<<5; ++ } ++ } ++ if (abs(motion_x)>1023) { ++ s->mv_dir = MV_DIR_BACKWARD|MV_DIR_FORWARD; ++ motion_x = s->mv[1][0][0]=s->mv[0][0][0]=0; ++ av_log(s->avctx, AV_LOG_ERROR, "emulation failed intra in b picture %d %d %d\n", ++ s->mb_x,s->mb_y,s->input_picture_number); ++ for (i=0;i<6;i++) { ++ dec->block_last_index[i]=-1; //skip them ++ } ++ ++ } ++ ++ ++ ++ // dec->block[4][0]=2048; //should give awkward color for spotting them ++ ++ for (i=0;i<6;i++) { ++ dec->block[i][0]-=1024; ++ } ++ ++ ++ emulate=1; ++ } else { ++ if (s->mv_type == MV_TYPE_16X8) { //this is not supported by mpeg4 emulate with 8x8 ++ s->mv_type=MV_TYPE_16X16; ++ // TODO figure out if MV_TYPE_DIRECT would give a better quality ++ // figure also out if a mean motion vector will be better ++ av_log(s->avctx, AV_LOG_ERROR, "16X8 in b picture %d %d %d\n", ++ s->mb_x,s->mb_y,s->input_picture_number); ++ ++ } ++ } ++ } else { ++ if (s->mv_type == MV_TYPE_DMV) { //this is not supported by mpeg4 emulate with 16x16 ++ s->mv_type=MV_TYPE_16X16; ++ // do we have to scale motion vector dunno ++ av_log(s->avctx, AV_LOG_ERROR, "DMV in p picture %d %d %d\n", ++ s->mb_x,s->mb_y,s->input_picture_number); ++ } ++ ++ } ++ ++ ff_update_block_index(s); ++ ++ /* update DC predictors for P macroblocks */ //must come after the update of block ndices ++ if (!s->mb_intra) { ++ if ((s->h263_pred || s->h263_aic)) { ++ if(s->mbintra_table[mb_xy]) ++ ff_clean_intra_table_entries(s); ++ } else { ++ s->last_dc[0] = ++ s->last_dc[1] = ++ s->last_dc[2] = 128 << s->intra_dc_precision; ++ } ++ ++ ++ ++ } ++ else if ( (s->h263_pred || s->h263_aic)) ++ s->mbintra_table[mb_xy]=1; ++ ++ ++ ++ if (!emulate) { ++ for (i = 0; i < 6; i++) { ++ ++ if (dec->block_last_index[i]>=0) { ++ int overflow; ++ s->block_last_index[i] = quantize_c(s, dec->block[i], i, s->qscale, ++ dec->block_last_index[i], &overflow); ++ // FIXME we could decide to change to quantizer instead of ++ // clipping ++ // JS: I don't think that would be a good idea it could lower ++ // quality instead of improve it. Just INTRADC clipping ++ // deserves changes in quantizer ++ if (overflow) ++ clip_coeffs(s, dec->block[i], s->block_last_index[i]); ++ } else ++ s->block_last_index[i] = -1; ++ } ++ } else { ++ for (i = 0; i < 6; i++) { ++ ++ if (dec->block_last_index[i]>=0) { ++ int overflow; ++ s->block_last_index[i] = quantize_emulated_intra_c(s, dec->block[i], i, s->qscale, ++ dec->block_last_index[i], &overflow); ++ // FIXME we could decide to change to quantizer instead of ++ // clipping ++ // JS: I don't think that would be a good idea it could lower ++ // quality instead of improve it. Just INTRADC clipping ++ // deserves changes in quantizer ++ if (overflow) ++ clip_coeffs(s, dec->block[i], s->block_last_index[i]); ++ } else ++ s->block_last_index[i] = -1; ++ } ++ ++ } ++ ++ ++ ++ ++ ff_mpeg4_encode_mb(s, dec->block, motion_x, motion_y); ++ ff_h263_update_motion_val(s); ++ ++ if (s->mb_x==s->mb_width-2) { ++ s->mb_x = s->mb_width-1; ++ add_zero_mb(s); ++ } ++ ++ s->avctx->time_base.den=savetimebaseden; ++ ++ ++} ++ ++void ff_mpeg4_transcode_write_picture_headers(MpegEncContext *dec,AVCodecContext* avctx) ++{ ++ Mpeg1Context *s2; ++ MpegEncContext *s; ++ int save_profile; ++ int save_level; ++ s2 = avctx->priv_data; ++ s = s2->mpeg_enc_ctx.transcode_context; ++ ++ //now transfer the decoded data to the encoding context ++ ++ ++ ++ ++ ++ ++ //picture header ++ s->pict_type = dec->pict_type; ++ ++ s->qscale = (dec->qscale>>1|1); //qscale is set in the slices maybe move this function to slice, attention so is modifing qscale in the of the picture ++ ff_set_qscale(s, s->qscale); ++ ++ s->no_rounding = 0; //does not matter related to gmc ++ s->progressive_sequence = dec->progressive_sequence; ++ s->current_picture_ptr->f.top_field_first = dec->top_field_first; ++ s->alternate_scan = dec->alternate_scan; ++ if (dec->current_picture.f.pkt_pts!=AV_NOPTS_VALUE && dec->current_picture.f.pkt_pts) { ++ //thanks to god someone is supplying hopefully clean pts values, use them!!! ++ s->current_picture_ptr->f.pts=dec->current_picture.f.pkt_pts; ++ } else { ++ // this is ugly and will probably fail, ++ // it assumes a constant b frames distance ++ ++ s->current_picture_ptr->f.pts=s->input_picture_number+0; //dirty hack, but works ++ ++ if (s->pict_type==AV_PICTURE_TYPE_B) ++ { ++ // we guess a sequence with two b frames inbetween I and P frames, ++ // as long as no DIRECT mv is used this should be fine if we are wrong ++ s->current_picture_ptr->f.pts= ++ s->current_picture_ptr->f.pts-3; ++ // if (s->current_picture_ptr->f.pts==s->last_time_base) s->current_picture_ptr->f.pts++; ++ ++ ++ } ++ ++ } ++ if (s->pict_type!=AV_PICTURE_TYPE_B) { ++ s->last_picture.f.pts=s->reordered_pts; // dirty hack ++ s->reordered_pts=s->current_picture_ptr->f.pts; ++ } ++ ++ ++ if (s->alternate_scan) { ++ ff_init_scantable(s->dsp.idct_permutation, &s->inter_scantable,ff_alternate_vertical_scan); ++ ff_init_scantable(s->dsp.idct_permutation, &s->intra_scantable,ff_alternate_vertical_scan); ++ ff_init_scantable(s->dsp.idct_permutation, &s->intra_h_scantable,ff_alternate_vertical_scan); ++ ff_init_scantable(s->dsp.idct_permutation, &s->intra_v_scantable,ff_alternate_vertical_scan); ++ } else { ++ ff_init_scantable(s->dsp.idct_permutation, &s->inter_scantable,ff_zigzag_direct); ++ ff_init_scantable(s->dsp.idct_permutation, &s->intra_scantable,ff_zigzag_direct); ++ ff_init_scantable(s->dsp.idct_permutation, &s->intra_h_scantable,ff_alternate_horizontal_scan); ++ ff_init_scantable(s->dsp.idct_permutation, &s->intra_v_scantable,ff_alternate_vertical_scan); ++ } ++ ++ s->strict_std_compliance = FF_COMPLIANCE_VERY_STRICT-1; ++ s->data_partitioning = 0; ++ s->f_code = dec->mpeg_f_code[0][0]; ++ if (dec->mpeg_f_code[0][1] > s->f_code) { ++ s->f_code = dec->mpeg_f_code[0][1]; ++ } ++ ++ //we select the maximum code, but not more than the maximal possible value, ++ ++ ++ s->b_code = dec->mpeg_f_code[1][0]; ++ if (dec->mpeg_f_code[1][1] > s->b_code) { ++ s->b_code = dec->mpeg_f_code[1][1]; ++ } ++ ++ if (s->pict_type == AV_PICTURE_TYPE_B) { ++ ++ if (s->b_code<=s->f_code) { ++ s->f_code=FFMIN(FFMAX(av_log2(s->width)-2,s->f_code),7); ++ } else { ++ s->b_code=FFMIN(FFMAX(av_log2(s->width)-2,s->b_code),7); ++ } ++ } ++ ++ //vol header ++ save_profile = s->avctx->profile; ++ save_level = s->avctx->level; ++ s->avctx->profile = FF_PROFILE_MPEG4_ADVANCED_SIMPLE; ++ s->avctx->level = 1; ++ ++ s->width = dec->width+32; // check if we need emulation black bars ++ s->height = dec->height; ++ s->mb_stride = dec->mb_stride+2; //emulating black bars ++ s->quarter_sample = 0; ++ s->ac_pred = 0; ++ ++ s->me.mb_var_sum_temp = ++ s->me.mc_mb_var_sum_temp = 0; ++ ++ ++ ++ ff_set_frame_distances(s); ++ ff_set_mpeg4_time(s); ++ ++ s->me.scene_change_score=0; ++ ++ if (s2->closed_gop) s->flags|=CODEC_FLAG_CLOSED_GOP; ++ else s->flags&=~CODEC_FLAG_CLOSED_GOP;//transverse gop flag ++ ++ ++ ff_mpeg4_encode_picture_header(s, 0); ++ s->avctx->profile = save_profile; ++ s->avctx->level = save_level; ++ ++ ++ ++ ++} +diff --git a/libavcodec/transcode.h b/libavcodec/transcode.h +new file mode 100644 +index 0000000..c1c8c85 +--- /dev/null ++++ b/libavcodec/transcode.h +@@ -0,0 +1,69 @@ ++/* ++ * Copyright (C) 2012 Marten Richter ++ * ++ * This file is part of Libav. ++ * ++ * Libav is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * Libav is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with Libav; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#ifndef AVCODEC_TRANSCODE_H ++#define AVCODEC_TRANSCODE_H ++ ++/** ++ * @file ++ * @ingroup lavc_codec_hwaccel_mpeg4_transcode ++ * Public libavcodec Mpeg4TranscodeHeader header. ++ */ ++ ++#include "avcodec.h" ++ ++/** ++ * @defgroup lavc_codec_hwaccel_mpeg4_transcode Mpeg4Transcode ++ * @ingroup lavc_codec_hwaccel ++ * ++ * @{ ++ */ ++ ++#define AV_TRANSCODE_ID 0x54524E53 /**< special value to ensure that regular pixel routines haven't corrupted the struct ++ the number speak for the letters TRNS */ ++ ++struct transcode_pix_fmt { ++ /** The field contains the special constant value AV_TRANSCODE_ID. ++ It is used as a test that the application correctly uses the API, ++ and that there is no corruption caused by pixel routines. ++ - application - set during initialization ++ - libavcodec - unchanged ++ */ ++ int transcode_id; ++ ++ /** AVPacket structure containing the buffer getting all the transcoded data ++ - application - set the pointer during initialization ++ - libavcodec - fills bitstream to packet ++ */ ++ AVPacket packet; ++ ++ /** Indicates that a new frame start in this frame ++ - application - unchanged ++ - libavcodec - set ++ */ ++ int new_frame; ++ ++}; ++ ++/** ++ * @} ++ */ ++ ++#endif /* AVCODEC_XVMC_H */ +diff --git a/libavcodec/transcode_internal.h b/libavcodec/transcode_internal.h +new file mode 100644 +index 0000000..b837fde +--- /dev/null ++++ b/libavcodec/transcode_internal.h +@@ -0,0 +1,34 @@ ++/* ++ * Transcode internal functions ++ * ++ * This file is part of Libav. ++ * ++ * Libav is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * Libav is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with Libav; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#ifndef AVCODEC_TRANSCODE_INTERNAL_H ++#define AVCODEC_TRANSCODE_INTERNAL_H ++ ++#include "avcodec.h" ++#include "mpegvideo.h" ++ ++int ff_mpeg_transcode_decode_postinit(AVCodecContext* avctx); ++void ff_mpeg4_transcode_write_picture_headers(MpegEncContext *dec,AVCodecContext* avctx); ++void ff_transcode_decode_mb(MpegEncContext *dec); ++int ff_transcode_start_picture(MpegEncContext *dec, AVCodecContext *avctx); ++void ff_transcode_end_picture(MpegEncContext *dec); ++void ff_mpeg4_transcode_mb(MpegEncContext * s, DCTELEM block[6][64], int motion_x, int motion_y); ++ ++#endif /* AVCODEC_TRANSCODE_INTERNAL_H */ +diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h +index bd898bd..9600629 100644 +--- a/libavutil/pixfmt.h ++++ b/libavutil/pixfmt.h +@@ -157,6 +157,8 @@ enum PixelFormat { + PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little endian + PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big endian + PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little endian ++ ++ PIX_FMT_TRANSCODE, ///< HW decoding of mpeg4 data[0] contains a transcode_pix_fmt structure + PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions + }; + +-- +1.7.10.4 + diff --git a/res/raspi-patches/readme.txt b/res/raspi-patches/readme.txt new file mode 100644 index 0000000..7c3b2a5 --- /dev/null +++ b/res/raspi-patches/readme.txt @@ -0,0 +1,11 @@ +Since now mpeg2 licenses are available, + a custom libav is not necessary anymore for transcoding. + I leave the patch here, if some one wants to pick up the idea again. + + Marten + +== Not necessary anymore == +vompclient on Raspberry PI needs its own patched libav. +Please use the skript fetch_libav.sh to download the libav from and +to apply our custom libav patches and to run the configure command. + diff --git a/run.sh b/run.sh deleted file mode 100755 index ecf0765..0000000 --- a/run.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -ssh -t targetpi "cd /dev/shm; ulimit -c unlimited; ./vomp" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 5796a17..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,130 +0,0 @@ -cmake_minimum_required(VERSION 3.13.4) - -set (VOMP_OBJ_COMMON - util.cc control.cc thread.cc timers.cc i18n.cc udp4.cc udp6.cc vdpc.cc tcp.cc - message.cc messagequeue.cc wol.cc audio.cc video.cc - vdr.cc recman.cc recording.cc recinfo.cc channel.cc rectimer.cc event.cc - directory.cc mark.cc option.cc vfeed.cc afeed.cc - demuxer.cc demuxervdr.cc demuxerts.cc stream.cc osd.cc surface.cc - region.cc colour.cc boxstack.cc boxx.cc tbboxx.cc vrecording.cc - vinfo.cc vquestion.cc vrecordinglist.cc vrecordinglistclassic.cc - vrecordinglistadvanced.cc vepgsummary.cc vepglistadvanced.cc - vmute.cc vvolume.cc vtimerlist.cc vtimeredit.cc vrecordingmenu.cc - vchannellist.cc vwelcome.cc vvideorec.cc vepgsettimer.cc - vchannelselect.cc vserverselect.cc vconnect.cc vepg.cc vrecmove.cc - vradiorec.cc vaudioselector.cc vscreensaver.cc vopts.cc - wselectlist.cc wjpeg.cc wsymbol.cc wbutton.cc wtextbox.cc - woptionpane.cc woptionbox.cc wremoteconfig.cc wtabbar.cc led.cc - inputman.cc input.cc inputudp.cc inputlirc.cc vpicturebanner.cc - eventdispatcher.cc vdrrequestpacket.cc - vdrresponsepacket.cc vvideolivetv.cc sleeptimer.cc - wprogressbar.cc bitmap.cc dvbsubtitles.cc tfeed.cc vteletextview.cc - teletextdecodervbiebu.cc teletxt/txtfont.cc movieinfo.cc seriesinfo.cc - wmovieview.cc wseriesview.cc wtvmedia.cc wpictureview.cc - osdvector.cc surfacevector.cc buffer.cc config.cc log.cc - playervideorec.cc playervideolive.cc playerradiolive.cc playerradiorec.cc - imageloader.cc image.cc telem.cc -) -# abstractoption.cc - -set (VOMP_OBJ_RASPBERRY - main.cc threadp.cc osdopenvg.cc ledraspberry.cc videoomx.cc audioomx.cc imageomx.cc - wjpegsimple.cc inputlinux.cc inputcec.cc - omx/omx.cc omx/omximagedecode.cc omx/omxeglrender.cc imageomx2.cc -) - -# -#OBJ_WINDOWS = winmain.o threadwin.o inputwin.o ledwin.o videowin.o \ -# audiowin.o windowsosd.o dsallocator.o dssourcefilter.o dssourcepin.o \ -# wwinvideofilter.o wwinvideoh264filter.o wwinaudiofilter.o \ -# wwinmp3audiofilter.o wjpegsimple.o -# -#OBJ_WINLEGACY = osdwinpixel.o surfacewin.o \ -# fonts/helvB24.o fonts/helvB18.o -# -#OBJ_WINCURRENT = osdwinvector.o -# - -set (PNG_FILES - other/vdrhires.png - other/wallpaper720p.jpg - other/properties.png - other/radio.png - other/timers.png - other/tv.png - other/recordings.png - other/restart.png - other/hd1080i.png - other/hd720p.png - other/sd576i.png - other/txtoff.png - other/txton.png - other/dolbyoff.png - other/dolbyon.png - other/recording.png - other/recfolder.png - other/defposter.png -) - -project(vomp) -add_executable(vomp ${VOMP_OBJ_COMMON} ${VOMP_OBJ_RASPBERRY} pngs.o) - -# set(CMAKE_CXX_COMPILER_LAUNCHER "distcc") - not until cmake 3.17! - -if (${ENABLE_MOLD}) - target_link_options(vomp PRIVATE "-fuse-ld=${MOLD_BIN}") -endif() - -set(CMAKE_BUILD_TYPE Debug) -target_compile_options(vomp PRIVATE -O0) - -set_property(TARGET vomp PROPERTY CXX_STANDARD 14) - -find_path(INC_VC bcm_host.h PATHS /opt/vc/include) -find_path(INC_FT2 ft2build.h PATHS /usr/include/freetype2) -find_path(INC_MAGICK Magick++.h PATHS /usr/include/ImageMagick-6) -find_path(INC_MAGICK2 magick/magick-baseconfig.h PATHS /usr/include/arm-linux-gnueabihf/ImageMagick-6) - -target_include_directories(vomp SYSTEM PRIVATE ${INC_VC} ${INC_FT2} ${INC_MAGICK} ${INC_MAGICK2}) - -target_compile_options(vomp PRIVATE - -Werror=return-type - -Wall - -Wextra - -Wshadow - -Wmissing-declarations - -Winit-self - -Woverloaded-virtual - -Wmissing-format-attribute - -Wdisabled-optimization - -Wmissing-noreturn -) - -if (${ALL_WARNINGS}) - target_compile_options(vomp PRIVATE -Wold-style-cast -Wconversion) -endif() - -if (${FORCE_COLOR}) - target_compile_options(vomp PRIVATE -fdiagnostics-color=always) -endif() - - -target_compile_options(vomp PRIVATE - -D_GNU_SOURCE -DIPV4 -DIPV6 -DVOMP_PLATFORM_RASPBERRY -DMAGICKCORE_HDRI_ENABLE=0 - -DMAGICKCORE_QUANTUM_DEPTH=16 -DDEV) - -target_link_libraries(vomp - pthread stdc++ rt brcmEGL brcmOpenVG openmaxil bcm_host avformat avcodec - fmt avutil swresample m dl fontconfig freetype Magick++-6.Q16 - MagickWand-6.Q16 MagickCore-6.Q16 jsoncpp) - -target_link_directories(vomp PRIVATE - ${CMAKE_SYSROOT}/opt/vc/lib - ${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf) - -add_custom_command( - OUTPUT pngs.o - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - COMMENT pngs.o - COMMAND ${CMAKE_LINKER} -r -b binary -o ../build/pngs.o ${PNG_FILES} -) diff --git a/src/CMakeToolChainRPiClang.txt b/src/CMakeToolChainRPiClang.txt deleted file mode 100644 index 063e2fe..0000000 --- a/src/CMakeToolChainRPiClang.txt +++ /dev/null @@ -1,19 +0,0 @@ -set(CMAKE_SYSTEM_NAME Linux) - -set(CMAKE_FIND_ROOT_PATH /pi-root) -set(CMAKE_SYSROOT /pi-root) - -# Clang -#set(CMAKE_C_COMPILER "/usr/bin/clang-11") -#set(CMAKE_CXX_COMPILER "/usr/bin/clang++-11") -set(CMAKE_C_COMPILER "/opt/vompclient/compiler") -set(CMAKE_CXX_COMPILER "/opt/vompclient/compiler") -set(CMAKE_LINKER /usr/bin/arm-linux-gnueabihf-ld) -set(CMAKE_C_FLAGS "-target arm-linux-gnueabihf -mfloat-abi=hard -mcpu=cortex-a7") -set(CMAKE_CXX_FLAGS "-target arm-linux-gnueabihf -mfloat-abi=hard -mcpu=cortex-a7") - - -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/src/CMakeToolChainRPiGCC.txt b/src/CMakeToolChainRPiGCC.txt deleted file mode 100644 index 4a14672..0000000 --- a/src/CMakeToolChainRPiGCC.txt +++ /dev/null @@ -1,17 +0,0 @@ -set(CMAKE_SYSTEM_NAME Linux) - -set(CMAKE_FIND_ROOT_PATH /pi-root) -set(CMAKE_SYSROOT /pi-root) - -# GCC -set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc) -set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++) -set(CMAKE_C_FLAGS "-Wno-psabi -mtune=cortex-a7 -mfloat-abi=hard -fopenmp") -set(CMAKE_CXX_FLAGS "-Wno-psabi -mtune=cortex-a7 -mfloat-abi=hard -fopenmp") - -# Pi1: -mtune=arm1176jzf-s Pi2: -mtune=cortex-a7 Pi3: -mtune=cortex-a53 - - -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/src/config.json.sample b/src/config.json.sample deleted file mode 100644 index bba00fc..0000000 --- a/src/config.json.sample +++ /dev/null @@ -1,104 +0,0 @@ -/* Vomp local config file - - Using a local config.json file is optional. - This file shows all config options and their defaults, - where applicable. - - To use a local config, create config.json and copy in just the - settings you want to change. Place the file in the current working - directory for vompclient. - - Command line options override config.json. -*/ - -{ - "main": - { - "daemonize": true, - "start_to_live_tv": 1 // Channel number - }, - - "log": - { - "enabled": false, - "filename": "stdout", - "level": "debug" - }, - - "server": - { - // "server" has no defaults - // Normally vompclient will use IPv4 UDP broadcasts and IPv6 multicast to find servers - // Entering an address and optionally a port will disable discovery - - "address": "vdrserver.example.com", - "port": 3024 - }, - - "server-discovery": - { - // If exactly two servers are found by auto server location and they have the same - // name and port but different IP versions, prefer which? - "prefer-ipv": 6 - }, - - "telemetry": - { - /* Enable / disable telemetry with define in telem.h */ - "target_ip": "192.0.2.1", - "target_port": 7777 - }, - - "input": - { - "mod_cec_enabled": true, - "mod_udp_enabled": true, - "mod_lirc_enabled": true - }, - - "input_udp": - { - "port": 2000 - }, - - "input_lirc": - { - // input_lirc has no defaults - - // Use these two options: - - "lirc_ip": "192.0.2.1", /* Numeric IPv4 or IPv6 */ - "lirc_port": 8765, /* except this, this has a default */ - - // Or this one: - - "lirc_socket": "/run/lirc/lircd", - - // - - // List all the Lirc remote names to listen to here: - - "remotes": [ "lirc-remote-name-1", "lirc-remote-name-2" ], - - // Now create a section here for each Lirc remote. Map each Lirc button to vomp keys. - - "lirc-remote-name-1": - { - /* List all keys to be used by Vomp - On the left - the Lirc key name. On the right - the Vomp key name. See input.h (for now) */ - - "KEY_POWER": "POWER", - "KEY_MUTE": "MUTE" - // etc. - }, - - "lirc-remote-name-2": - { - } - }, - - "videoomx": - { - "disable-hdmi-modechange": false - } -} diff --git a/src/fonts/helvB18-ISO8859-1.pcf b/src/fonts/helvB18-ISO8859-1.pcf deleted file mode 100644 index ad032c3..0000000 Binary files a/src/fonts/helvB18-ISO8859-1.pcf and /dev/null differ diff --git a/src/fonts/helvB18.bdf b/src/fonts/helvB18.bdf deleted file mode 100644 index 9df3e60..0000000 --- a/src/fonts/helvB18.bdf +++ /dev/null @@ -1,4034 +0,0 @@ -STARTFONT 2.1 -FONT -Adobe-Helvetica-Bold-R-Normal--18-180-75-75-P-103-ISO8859-1 -SIZE 18 75 75 -FONTBOUNDINGBOX 18 23 -1 -5 - -STARTPROPERTIES 28 -FOUNDRY "Adobe" -FAMILY_NAME "Helvetica" -WEIGHT_NAME "Bold" -SLANT "R" -SETWIDTH_NAME "Normal" -ADD_STYLE_NAME "" -PIXEL_SIZE 18 -POINT_SIZE 180 -RESOLUTION_X 75 -RESOLUTION_Y 75 -SPACING "P" -AVERAGE_WIDTH 103 -CHARSET_REGISTRY "ISO8859" -CHARSET_ENCODING "1" -CAP_HEIGHT 14 -X_HEIGHT 10 -FACE_NAME "Helvetica Bold" -COPYRIGHT "Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved." -NOTICE "Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. " -_DEC_DEVICE_FONTNAMES "PS=Helvetica-Bold" -RELATIVE_SETWIDTH 50 -RELATIVE_WEIGHT 70 -FULL_NAME "Helvetica Bold" -WEIGHT 10 -QUAD_WIDTH 11 -DEFAULT_CHAR 0 -FONT_DESCENT 5 -FONT_ASCENT 16 -ENDPROPERTIES - -CHARS 192 - -STARTCHAR defaultchar -ENCODING 0 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 13 1 0 -BITMAP -AAA0 -0000 -8020 -0000 -8020 -0000 -8020 -0000 -8020 -0000 -8020 -0000 -AAA0 -ENDCHAR - -STARTCHAR space -ENCODING 32 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 1 1 0 0 -BITMAP -00 -ENDCHAR - -STARTCHAR exclam -ENCODING 33 -SWIDTH 333 0 -DWIDTH 5 0 -BBX 3 14 1 0 -BITMAP -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -C0 -C0 -00 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR quotedbl -ENCODING 34 -SWIDTH 474 0 -DWIDTH 8 0 -BBX 5 5 2 9 -BITMAP -D8 -D8 -D8 -D8 -90 -ENDCHAR - -STARTCHAR numbersign -ENCODING 35 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 11 13 0 0 -BITMAP -0D80 -0D80 -0D80 -7FE0 -7FE0 -1B00 -1B00 -1B00 -FFC0 -FFC0 -3600 -3600 -3600 -ENDCHAR - -STARTCHAR dollar -ENCODING 36 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 16 0 -2 -BITMAP -0800 -3E00 -7F00 -EB80 -EB80 -E800 -7800 -3E00 -0F00 -0B80 -EB80 -EB80 -7F00 -3E00 -0800 -0800 -ENDCHAR - -STARTCHAR percent -ENCODING 37 -SWIDTH 889 0 -DWIDTH 16 0 -BBX 13 13 1 0 -BITMAP -7860 -FC60 -CCC0 -CC80 -FD80 -7B00 -0200 -06F0 -0DF8 -0998 -1998 -31F8 -30F0 -ENDCHAR - -STARTCHAR ampersand -ENCODING 38 -SWIDTH 722 0 -DWIDTH 14 0 -BBX 13 13 1 0 -BITMAP -3E00 -7F00 -6300 -7300 -3E00 -7C60 -EE60 -C7E0 -C3C0 -C1C0 -E3E0 -7F70 -3E78 -ENDCHAR - -STARTCHAR quotesingle -ENCODING 39 -SWIDTH 238 0 -DWIDTH 4 0 -BBX 2 5 1 9 -BITMAP -C0 -C0 -C0 -C0 -80 -ENDCHAR - -STARTCHAR parenleft -ENCODING 40 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 6 18 0 -4 -BITMAP -1C -38 -30 -70 -60 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -60 -70 -30 -38 -1C -ENDCHAR - -STARTCHAR parenright -ENCODING 41 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 6 18 1 -4 -BITMAP -E0 -70 -30 -38 -18 -1C -1C -1C -1C -1C -1C -1C -1C -18 -38 -30 -70 -E0 -ENDCHAR - -STARTCHAR asterisk -ENCODING 42 -SWIDTH 389 0 -DWIDTH 9 0 -BBX 7 6 1 8 -BITMAP -10 -D6 -7C -38 -6C -44 -ENDCHAR - -STARTCHAR plus -ENCODING 43 -SWIDTH 584 0 -DWIDTH 11 0 -BBX 9 8 1 1 -BITMAP -1C00 -1C00 -1C00 -FF80 -FF80 -1C00 -1C00 -1C00 -ENDCHAR - -STARTCHAR comma -ENCODING 44 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 3 5 1 -2 -BITMAP -E0 -E0 -E0 -60 -C0 -ENDCHAR - -STARTCHAR hyphen -ENCODING 45 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 5 3 1 4 -BITMAP -F8 -F8 -F8 -ENDCHAR - -STARTCHAR period -ENCODING 46 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 3 3 1 0 -BITMAP -E0 -E0 -E0 -ENDCHAR - -STARTCHAR slash -ENCODING 47 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 14 0 0 -BITMAP -18 -18 -18 -10 -30 -30 -30 -20 -60 -60 -40 -C0 -C0 -C0 -ENDCHAR - -STARTCHAR zero -ENCODING 48 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -1C00 -7F00 -7700 -E380 -E380 -E380 -E380 -E380 -E380 -E380 -7700 -7F00 -1C00 -ENDCHAR - -STARTCHAR one -ENCODING 49 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 6 13 1 0 -BITMAP -1C -3C -FC -FC -1C -1C -1C -1C -1C -1C -1C -1C -1C -ENDCHAR - -STARTCHAR two -ENCODING 50 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -3E00 -7F00 -E380 -E380 -0380 -0700 -1F00 -3E00 -7800 -7000 -E000 -FF80 -FF80 -ENDCHAR - -STARTCHAR three -ENCODING 51 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -3E00 -7F00 -E700 -E300 -0700 -1E00 -1F00 -0780 -0380 -E380 -E780 -7F00 -3E00 -ENDCHAR - -STARTCHAR four -ENCODING 52 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -0700 -0F00 -1F00 -3F00 -3700 -7700 -6700 -E700 -FF80 -FF80 -0700 -0700 -0700 -ENDCHAR - -STARTCHAR five -ENCODING 53 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -FF00 -FF00 -E000 -E000 -FE00 -FF00 -E780 -0380 -0380 -E380 -E780 -FF00 -7E00 -ENDCHAR - -STARTCHAR six -ENCODING 54 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -3E00 -7F00 -7300 -E000 -E000 -EE00 -FF00 -F380 -E380 -E380 -F380 -7F00 -3E00 -ENDCHAR - -STARTCHAR seven -ENCODING 55 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -FF80 -FF80 -0380 -0700 -0E00 -0E00 -1C00 -1C00 -3800 -3800 -7000 -7000 -7000 -ENDCHAR - -STARTCHAR eight -ENCODING 56 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -3E00 -7F00 -E380 -E380 -E380 -7F00 -3E00 -7700 -E380 -E380 -E380 -7F00 -3E00 -ENDCHAR - -STARTCHAR nine -ENCODING 57 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -3E00 -7F00 -E700 -E380 -C380 -C380 -E780 -7F80 -3D80 -0380 -E700 -FF00 -7C00 -ENDCHAR - -STARTCHAR colon -ENCODING 58 -SWIDTH 333 0 -DWIDTH 6 0 -BBX 3 10 2 0 -BITMAP -E0 -E0 -E0 -00 -00 -00 -00 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR semicolon -ENCODING 59 -SWIDTH 333 0 -DWIDTH 6 0 -BBX 3 12 2 -2 -BITMAP -E0 -E0 -E0 -00 -00 -00 -00 -E0 -E0 -E0 -40 -80 -ENDCHAR - -STARTCHAR less -ENCODING 60 -SWIDTH 584 0 -DWIDTH 11 0 -BBX 9 9 1 0 -BITMAP -0380 -0F80 -3E00 -7800 -E000 -7800 -3E00 -0F80 -0380 -ENDCHAR - -STARTCHAR equal -ENCODING 61 -SWIDTH 584 0 -DWIDTH 10 0 -BBX 8 6 1 2 -BITMAP -FF -FF -00 -00 -FF -FF -ENDCHAR - -STARTCHAR greater -ENCODING 62 -SWIDTH 584 0 -DWIDTH 11 0 -BBX 9 9 1 0 -BITMAP -E000 -F800 -3E00 -0F00 -0380 -0F00 -3E00 -F800 -E000 -ENDCHAR - -STARTCHAR question -ENCODING 63 -SWIDTH 611 0 -DWIDTH 10 0 -BBX 8 14 1 0 -BITMAP -7E -FF -E7 -E7 -0E -1E -1C -38 -38 -38 -00 -38 -38 -38 -ENDCHAR - -STARTCHAR at -ENCODING 64 -SWIDTH 975 0 -DWIDTH 18 0 -BBX 16 17 1 -3 -BITMAP -07F0 -1FFC -3C1E -7006 -63B7 -E7F3 -C663 -CC63 -CCC3 -CCC6 -CCC6 -EFFC -E7B8 -7000 -3C00 -1FF0 -07F0 -ENDCHAR - -STARTCHAR A -ENCODING 65 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -0E00 -0E00 -1F00 -1F00 -1B00 -3B80 -3180 -3180 -71C0 -7FC0 -7FC0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR B -ENCODING 66 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -FE00 -FF80 -E3C0 -E1C0 -E1C0 -E380 -FF80 -FFC0 -E1E0 -E0E0 -E0E0 -E1E0 -FFC0 -FF00 -ENDCHAR - -STARTCHAR C -ENCODING 67 -SWIDTH 722 0 -DWIDTH 14 0 -BBX 12 14 1 0 -BITMAP -0F80 -3FE0 -78E0 -7070 -F070 -E000 -E000 -E000 -E000 -F070 -7070 -78E0 -3FE0 -0F80 -ENDCHAR - -STARTCHAR D -ENCODING 68 -SWIDTH 722 0 -DWIDTH 14 0 -BBX 12 14 1 0 -BITMAP -FF00 -FFC0 -E1E0 -E0E0 -E070 -E070 -E070 -E070 -E070 -E070 -E0E0 -E1E0 -FFC0 -FF00 -ENDCHAR - -STARTCHAR E -ENCODING 69 -SWIDTH 667 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -FFC0 -FFC0 -E000 -E000 -E000 -E000 -FF80 -FF80 -E000 -E000 -E000 -E000 -FFC0 -FFC0 -ENDCHAR - -STARTCHAR F -ENCODING 70 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -FFC0 -FFC0 -E000 -E000 -E000 -E000 -FF80 -FF80 -E000 -E000 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR G -ENCODING 71 -SWIDTH 778 0 -DWIDTH 14 0 -BBX 12 14 1 0 -BITMAP -0F80 -3FE0 -78E0 -7070 -E070 -E000 -E000 -E3F0 -E3F0 -E070 -7070 -78F0 -3FF0 -1FB0 -ENDCHAR - -STARTCHAR H -ENCODING 72 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -FFE0 -FFE0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR I -ENCODING 73 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 3 14 1 0 -BITMAP -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR J -ENCODING 74 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 14 0 0 -BITMAP -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -E380 -E380 -F780 -7F00 -3E00 -ENDCHAR - -STARTCHAR K -ENCODING 75 -SWIDTH 722 0 -DWIDTH 14 0 -BBX 13 14 1 0 -BITMAP -E0F0 -E1E0 -E3C0 -E780 -EF00 -FE00 -FC00 -FE00 -EF00 -E780 -E3C0 -E1E0 -E0F0 -E078 -ENDCHAR - -STARTCHAR L -ENCODING 76 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 14 1 0 -BITMAP -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -FF80 -FF80 -ENDCHAR - -STARTCHAR M -ENCODING 77 -SWIDTH 833 0 -DWIDTH 16 0 -BBX 14 14 1 0 -BITMAP -E01C -E01C -F03C -F03C -F87C -F87C -F87C -ECDC -ECDC -ECDC -E79C -E79C -E31C -E31C -ENDCHAR - -STARTCHAR N -ENCODING 78 -SWIDTH 722 0 -DWIDTH 14 0 -BBX 12 14 1 0 -BITMAP -E070 -F070 -F070 -F870 -FC70 -EC70 -EE70 -E670 -E770 -E370 -E1F0 -E1F0 -E0F0 -E070 -ENDCHAR - -STARTCHAR O -ENCODING 79 -SWIDTH 778 0 -DWIDTH 16 0 -BBX 14 14 1 0 -BITMAP -0FC0 -3FF0 -7878 -7038 -F03C -E01C -E01C -E01C -E01C -F03C -7038 -7878 -3FF0 -0FC0 -ENDCHAR - -STARTCHAR P -ENCODING 80 -SWIDTH 667 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -FE00 -FF80 -E3C0 -E1C0 -E1C0 -E3C0 -FF80 -FE00 -E000 -E000 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR Q -ENCODING 81 -SWIDTH 778 0 -DWIDTH 16 0 -BBX 14 15 1 -1 -BITMAP -0FC0 -3FF0 -7878 -7038 -F03C -E01C -E01C -E01C -E01C -F19C -71D8 -78F8 -3FF0 -0FF8 -0018 -ENDCHAR - -STARTCHAR R -ENCODING 82 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -FF00 -FFC0 -E1E0 -E0E0 -E0E0 -E1E0 -FFC0 -FF80 -E1C0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR S -ENCODING 83 -SWIDTH 667 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -3F00 -7F80 -E3C0 -E1C0 -F000 -7C00 -3F00 -0F80 -03C0 -E1C0 -E1C0 -F3C0 -7F80 -3F00 -ENDCHAR - -STARTCHAR T -ENCODING 84 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 11 14 0 0 -BITMAP -FFE0 -FFE0 -0E00 -0E00 -0E00 -0E00 -0E00 -0E00 -0E00 -0E00 -0E00 -0E00 -0E00 -0E00 -ENDCHAR - -STARTCHAR U -ENCODING 85 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -71C0 -7FC0 -1F00 -ENDCHAR - -STARTCHAR V -ENCODING 86 -SWIDTH 667 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -E0E0 -E0E0 -E0E0 -71C0 -71C0 -71C0 -3180 -3B80 -3B80 -1B00 -1F00 -1F00 -0E00 -0E00 -ENDCHAR - -STARTCHAR W -ENCODING 87 -SWIDTH 944 0 -DWIDTH 17 0 -BBX 15 14 1 0 -BITMAP -E38E -E38E -E38E -E38E -739C -739C -739C -76DC -36D8 -36D8 -3EF8 -1C70 -1C70 -1C70 -ENDCHAR - -STARTCHAR X -ENCODING 88 -SWIDTH 667 0 -DWIDTH 12 0 -BBX 12 14 0 0 -BITMAP -E070 -E070 -70E0 -79E0 -1980 -1F80 -0F00 -1F80 -1980 -39C0 -70E0 -70E0 -E070 -E070 -ENDCHAR - -STARTCHAR Y -ENCODING 89 -SWIDTH 667 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -E0E0 -E0E0 -E0E0 -71C0 -71C0 -3B80 -3B80 -1F00 -0E00 -0E00 -0E00 -0E00 -0E00 -0E00 -ENDCHAR - -STARTCHAR Z -ENCODING 90 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 10 14 1 0 -BITMAP -FFC0 -FFC0 -01C0 -0380 -0700 -0700 -0E00 -1C00 -3800 -3800 -7000 -E000 -FFC0 -FFC0 -ENDCHAR - -STARTCHAR bracketleft -ENCODING 91 -SWIDTH 333 0 -DWIDTH 6 0 -BBX 5 18 1 -4 -BITMAP -F8 -F8 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -F8 -F8 -ENDCHAR - -STARTCHAR backslash -ENCODING 92 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 14 0 0 -BITMAP -C0 -C0 -C0 -40 -60 -60 -60 -20 -30 -30 -10 -18 -18 -18 -ENDCHAR - -STARTCHAR bracketright -ENCODING 93 -SWIDTH 333 0 -DWIDTH 6 0 -BBX 5 18 0 -4 -BITMAP -F8 -F8 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -F8 -F8 -ENDCHAR - -STARTCHAR asciicircum -ENCODING 94 -SWIDTH 584 0 -DWIDTH 10 0 -BBX 10 6 0 7 -BITMAP -0C00 -1E00 -3F00 -7380 -E1C0 -C0C0 -ENDCHAR - -STARTCHAR underscore -ENCODING 95 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 10 2 0 -4 -BITMAP -FFC0 -FFC0 -ENDCHAR - -STARTCHAR grave -ENCODING 96 -SWIDTH 333 0 -DWIDTH 5 0 -BBX 5 3 0 11 -BITMAP -E0 -70 -38 -ENDCHAR - -STARTCHAR a -ENCODING 97 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 10 1 0 -BITMAP -7C -FE -E7 -0F -3F -77 -E7 -E7 -FF -77 -ENDCHAR - -STARTCHAR b -ENCODING 98 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -E000 -E000 -E000 -E000 -EF00 -FF80 -F380 -E1C0 -E1C0 -E1C0 -E1C0 -F380 -FF80 -EF00 -ENDCHAR - -STARTCHAR c -ENCODING 99 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 10 1 0 -BITMAP -1E00 -7F80 -7380 -E000 -E000 -E000 -E000 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR d -ENCODING 100 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -01C0 -01C0 -01C0 -01C0 -3DC0 -7FC0 -73C0 -E1C0 -E1C0 -E1C0 -E1C0 -73C0 -7FC0 -3DC0 -ENDCHAR - -STARTCHAR e -ENCODING 101 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 9 10 1 0 -BITMAP -1E00 -7F00 -7380 -E180 -FF80 -FF80 -E000 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR f -ENCODING 102 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 7 14 0 0 -BITMAP -1E -3E -38 -38 -FE -FE -38 -38 -38 -38 -38 -38 -38 -38 -ENDCHAR - -STARTCHAR g -ENCODING 103 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 -4 -BITMAP -3DC0 -7FC0 -73C0 -E1C0 -E1C0 -E1C0 -E1C0 -73C0 -7FC0 -3DC0 -01C0 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR h -ENCODING 104 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 14 1 0 -BITMAP -E000 -E000 -E000 -E000 -EF00 -FF80 -F380 -E380 -E380 -E380 -E380 -E380 -E380 -E380 -ENDCHAR - -STARTCHAR i -ENCODING 105 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 3 14 1 0 -BITMAP -E0 -E0 -00 -00 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR j -ENCODING 106 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 18 -1 -4 -BITMAP -38 -38 -00 -00 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -F8 -F0 -ENDCHAR - -STARTCHAR k -ENCODING 107 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 14 1 0 -BITMAP -E000 -E000 -E000 -E000 -E700 -EE00 -FC00 -F800 -F800 -FC00 -EE00 -E700 -E780 -E380 -ENDCHAR - -STARTCHAR l -ENCODING 108 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 3 14 1 0 -BITMAP -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR m -ENCODING 109 -SWIDTH 889 0 -DWIDTH 15 0 -BBX 13 10 1 0 -BITMAP -EE70 -FFF8 -F7B8 -E738 -E738 -E738 -E738 -E738 -E738 -E738 -ENDCHAR - -STARTCHAR n -ENCODING 110 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 10 1 0 -BITMAP -EF00 -FF80 -F380 -E380 -E380 -E380 -E380 -E380 -E380 -E380 -ENDCHAR - -STARTCHAR o -ENCODING 111 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 10 1 0 -BITMAP -1E00 -7F80 -7380 -E1C0 -E1C0 -E1C0 -E1C0 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR p -ENCODING 112 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 -4 -BITMAP -EF00 -FF80 -F380 -E1C0 -E1C0 -E1C0 -E1C0 -F380 -FF80 -EF00 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR q -ENCODING 113 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 -4 -BITMAP -3DC0 -7FC0 -73C0 -E1C0 -E1C0 -E1C0 -E1C0 -73C0 -7FC0 -3DC0 -01C0 -01C0 -01C0 -01C0 -ENDCHAR - -STARTCHAR r -ENCODING 114 -SWIDTH 389 0 -DWIDTH 7 0 -BBX 6 10 1 0 -BITMAP -EC -FC -FC -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR s -ENCODING 115 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 10 1 0 -BITMAP -1E -7F -E7 -E0 -FE -3F -07 -E7 -FE -78 -ENDCHAR - -STARTCHAR t -ENCODING 116 -SWIDTH 333 0 -DWIDTH 6 0 -BBX 6 13 0 0 -BITMAP -70 -70 -70 -FC -FC -70 -70 -70 -70 -70 -70 -7C -3C -ENDCHAR - -STARTCHAR u -ENCODING 117 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 10 1 0 -BITMAP -E380 -E380 -E380 -E380 -E380 -E380 -E380 -E780 -FF80 -7B80 -ENDCHAR - -STARTCHAR v -ENCODING 118 -SWIDTH 556 0 -DWIDTH 9 0 -BBX 9 10 0 0 -BITMAP -E380 -E380 -E380 -7700 -7700 -7700 -3E00 -3E00 -1C00 -1C00 -ENDCHAR - -STARTCHAR w -ENCODING 119 -SWIDTH 778 0 -DWIDTH 13 0 -BBX 13 10 0 0 -BITMAP -E738 -E738 -E738 -6730 -7770 -7570 -3DE0 -3DE0 -18C0 -18C0 -ENDCHAR - -STARTCHAR x -ENCODING 120 -SWIDTH 556 0 -DWIDTH 9 0 -BBX 9 10 0 0 -BITMAP -E380 -E380 -7700 -3E00 -1C00 -3E00 -7700 -7700 -E380 -E380 -ENDCHAR - -STARTCHAR y -ENCODING 121 -SWIDTH 556 0 -DWIDTH 9 0 -BBX 9 14 0 -4 -BITMAP -E380 -E380 -E380 -7700 -7700 -7700 -3E00 -3E00 -1C00 -1C00 -1C00 -1800 -7800 -7000 -ENDCHAR - -STARTCHAR z -ENCODING 122 -SWIDTH 500 0 -DWIDTH 10 0 -BBX 8 10 1 0 -BITMAP -FF -FF -07 -0E -1C -38 -70 -E0 -FF -FF -ENDCHAR - -STARTCHAR braceleft -ENCODING 123 -SWIDTH 389 0 -DWIDTH 8 0 -BBX 7 18 1 -4 -BITMAP -0E -1C -38 -38 -38 -38 -38 -70 -E0 -70 -38 -38 -38 -38 -38 -38 -1C -0E -ENDCHAR - -STARTCHAR bar -ENCODING 124 -SWIDTH 280 0 -DWIDTH 5 0 -BBX 2 18 1 -4 -BITMAP -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -ENDCHAR - -STARTCHAR braceright -ENCODING 125 -SWIDTH 389 0 -DWIDTH 8 0 -BBX 7 18 0 -4 -BITMAP -E0 -70 -38 -38 -38 -38 -38 -1C -0E -1C -38 -38 -38 -38 -38 -38 -70 -E0 -ENDCHAR - -STARTCHAR asciitilde -ENCODING 126 -SWIDTH 584 0 -DWIDTH 11 0 -BBX 9 3 1 4 -BITMAP -7980 -FF80 -CF00 -ENDCHAR - -STARTCHAR space -ENCODING 160 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 1 1 0 0 -BITMAP -00 -ENDCHAR - -STARTCHAR exclamdown -ENCODING 161 -SWIDTH 333 0 -DWIDTH 6 0 -BBX 3 14 2 -4 -BITMAP -E0 -E0 -00 -00 -60 -60 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR cent -ENCODING 162 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 14 1 -2 -BITMAP -02 -02 -3E -7F -E7 -C8 -C8 -D0 -D0 -E3 -7F -7E -40 -40 -ENDCHAR - -STARTCHAR sterling -ENCODING 163 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 10 13 0 0 -BITMAP -1F00 -3FC0 -71C0 -7000 -7000 -3800 -7F00 -1C00 -1C00 -3800 -70C0 -FFC0 -EF80 -ENDCHAR - -STARTCHAR currency -ENCODING 164 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 9 8 1 2 -BITMAP -C180 -FF80 -7700 -6300 -6300 -7700 -FF80 -C180 -ENDCHAR - -STARTCHAR yen -ENCODING 165 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 13 0 0 -BITMAP -E380 -E380 -E380 -7700 -7700 -3E00 -FF80 -1C00 -FF80 -1C00 -1C00 -1C00 -1C00 -ENDCHAR - -STARTCHAR brokenbar -ENCODING 166 -SWIDTH 280 0 -DWIDTH 5 0 -BBX 2 17 1 -3 -BITMAP -C0 -C0 -C0 -C0 -C0 -C0 -C0 -00 -00 -00 -C0 -C0 -C0 -C0 -C0 -C0 -C0 -ENDCHAR - -STARTCHAR section -ENCODING 167 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 18 1 -4 -BITMAP -3C -7E -C7 -C7 -E0 -78 -FC -C6 -C7 -E3 -73 -3F -0E -07 -E3 -E3 -7E -3C -ENDCHAR - -STARTCHAR dieresis -ENCODING 168 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 5 2 1 11 -BITMAP -D8 -D8 -ENDCHAR - -STARTCHAR copyright -ENCODING 169 -SWIDTH 737 0 -DWIDTH 15 0 -BBX 13 13 1 0 -BITMAP -0F80 -38E0 -6030 -6730 -CD98 -D818 -9808 -D818 -CD98 -6730 -6030 -38E0 -0F80 -ENDCHAR - -STARTCHAR ordfeminine -ENCODING 170 -SWIDTH 370 0 -DWIDTH 8 0 -BBX 6 9 1 5 -BITMAP -78 -8C -7C -CC -CC -74 -00 -FC -FC -ENDCHAR - -STARTCHAR guillemotleft -ENCODING 171 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 10 8 0 1 -BITMAP -1DC0 -3B80 -7700 -EE00 -EE00 -7700 -3B80 -1DC0 -ENDCHAR - -STARTCHAR logicalnot -ENCODING 172 -SWIDTH 584 0 -DWIDTH 11 0 -BBX 9 5 1 2 -BITMAP -FF80 -FF80 -0180 -0180 -0180 -ENDCHAR - -STARTCHAR hyphen -ENCODING 173 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 5 3 1 4 -BITMAP -F8 -F8 -F8 -ENDCHAR - -STARTCHAR registered -ENCODING 174 -SWIDTH 737 0 -DWIDTH 15 0 -BBX 13 13 1 0 -BITMAP -0F80 -38E0 -6030 -6F90 -CCD8 -CCD8 -8F08 -CD98 -CD98 -6CF0 -6030 -38E0 -0F80 -ENDCHAR - -STARTCHAR macron -ENCODING 175 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 5 2 1 12 -BITMAP -F8 -F8 -ENDCHAR - -STARTCHAR degree -ENCODING 176 -SWIDTH 400 0 -DWIDTH 7 0 -BBX 6 6 0 7 -BITMAP -78 -FC -CC -CC -FC -78 -ENDCHAR - -STARTCHAR plusminus -ENCODING 177 -SWIDTH 584 0 -DWIDTH 11 0 -BBX 9 9 1 0 -BITMAP -1C00 -1C00 -FF80 -FF80 -1C00 -1C00 -0000 -FF80 -FF80 -ENDCHAR - -STARTCHAR twosuperior -ENCODING 178 -SWIDTH 333 0 -DWIDTH 6 0 -BBX 6 8 0 5 -BITMAP -78 -FC -CC -1C -78 -E0 -FC -FC -ENDCHAR - -STARTCHAR threesuperior -ENCODING 179 -SWIDTH 333 0 -DWIDTH 6 0 -BBX 6 8 0 5 -BITMAP -78 -FC -CC -38 -3C -CC -FC -78 -ENDCHAR - -STARTCHAR acute -ENCODING 180 -SWIDTH 333 0 -DWIDTH 5 0 -BBX 5 3 0 11 -BITMAP -38 -70 -E0 -ENDCHAR - -STARTCHAR mu -ENCODING 181 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 14 1 -4 -BITMAP -E380 -E380 -E380 -E380 -E380 -E380 -E380 -E780 -FF80 -FB80 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR paragraph -ENCODING 182 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 18 0 -4 -BITMAP -3F80 -7B00 -FB00 -FB00 -FB00 -FB00 -FB00 -7B00 -3B00 -1B00 -1B00 -1B00 -1B00 -1B00 -1B00 -1B00 -1B00 -1B00 -ENDCHAR - -STARTCHAR periodcentered -ENCODING 183 -SWIDTH 278 0 -DWIDTH 4 0 -BBX 2 2 1 4 -BITMAP -C0 -C0 -ENDCHAR - -STARTCHAR cedilla -ENCODING 184 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 5 5 1 -5 -BITMAP -60 -70 -18 -F8 -F0 -ENDCHAR - -STARTCHAR onesuperior -ENCODING 185 -SWIDTH 333 0 -DWIDTH 6 0 -BBX 4 8 0 5 -BITMAP -30 -F0 -F0 -30 -30 -30 -30 -30 -ENDCHAR - -STARTCHAR ordmasculine -ENCODING 186 -SWIDTH 365 0 -DWIDTH 8 0 -BBX 6 9 1 5 -BITMAP -78 -CC -CC -CC -CC -78 -00 -FC -FC -ENDCHAR - -STARTCHAR guillemotright -ENCODING 187 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 10 8 0 1 -BITMAP -EE00 -7700 -3B80 -1DC0 -1DC0 -3B80 -7700 -EE00 -ENDCHAR - -STARTCHAR onequarter -ENCODING 188 -SWIDTH 834 0 -DWIDTH 15 0 -BBX 14 13 0 0 -BITMAP -3060 -F060 -F0C0 -30C0 -3180 -3198 -3338 -3638 -0678 -0CD8 -0CFC -1818 -1818 -ENDCHAR - -STARTCHAR onehalf -ENCODING 189 -SWIDTH 834 0 -DWIDTH 15 0 -BBX 15 13 0 0 -BITMAP -3060 -F060 -F0C0 -30C0 -3180 -31BC -337E -3666 -060E -0C3C -0C70 -187E -187E -ENDCHAR - -STARTCHAR threequarters -ENCODING 190 -SWIDTH 834 0 -DWIDTH 15 0 -BBX 14 13 0 0 -BITMAP -7830 -FC30 -CC60 -3860 -3CC0 -CCD8 -FDB8 -7B38 -0378 -06D8 -06FC -0C18 -0C18 -ENDCHAR - -STARTCHAR questiondown -ENCODING 191 -SWIDTH 611 0 -DWIDTH 10 0 -BBX 8 14 1 -4 -BITMAP -1C -1C -00 -00 -1C -1C -1C -38 -78 -70 -E7 -E7 -FF -7E -ENDCHAR - -STARTCHAR Agrave -ENCODING 192 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 18 1 0 -BITMAP -3800 -1C00 -0E00 -0000 -0E00 -0E00 -1F00 -1F00 -1B00 -3B80 -3180 -3180 -71C0 -7FC0 -7FC0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR Aacute -ENCODING 193 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 18 1 0 -BITMAP -0380 -0700 -0E00 -0000 -0E00 -0E00 -1F00 -1F00 -1B00 -3B80 -3180 -3180 -71C0 -7FC0 -7FC0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR Acircumflex -ENCODING 194 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 18 1 0 -BITMAP -0E00 -1F00 -3B80 -0000 -0E00 -0E00 -1F00 -1F00 -1B00 -3B80 -3180 -3180 -71C0 -7FC0 -7FC0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR Atilde -ENCODING 195 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 18 1 0 -BITMAP -1D80 -3F80 -3700 -0000 -0E00 -0E00 -1F00 -1F00 -1B00 -3B80 -3180 -3180 -71C0 -7FC0 -7FC0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR Adieresis -ENCODING 196 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 17 1 0 -BITMAP -1980 -1980 -0000 -0E00 -0E00 -1F00 -1F00 -1B00 -3B80 -3180 -3180 -71C0 -7FC0 -7FC0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR Aring -ENCODING 197 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 17 1 0 -BITMAP -0E00 -1B00 -1B00 -0E00 -0E00 -1F00 -1F00 -1B00 -3B80 -3180 -3180 -71C0 -7FC0 -7FC0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR AE -ENCODING 198 -SWIDTH 1000 0 -DWIDTH 18 0 -BBX 16 14 1 0 -BITMAP -0FFF -0FFF -1F80 -1B80 -3B80 -3B80 -33FE -73FE -7380 -7F80 -FF80 -E380 -E3FF -E3FF -ENDCHAR - -STARTCHAR Ccedilla -ENCODING 199 -SWIDTH 722 0 -DWIDTH 14 0 -BBX 12 19 1 -5 -BITMAP -0F80 -3FE0 -78E0 -7070 -F070 -E000 -E000 -E000 -E000 -F070 -7070 -78E0 -3FE0 -0F80 -0C00 -0E00 -0300 -1F00 -1E00 -ENDCHAR - -STARTCHAR Egrave -ENCODING 200 -SWIDTH 667 0 -DWIDTH 12 0 -BBX 10 18 1 0 -BITMAP -3800 -1C00 -0E00 -0000 -FFC0 -FFC0 -E000 -E000 -E000 -E000 -FF80 -FF80 -E000 -E000 -E000 -E000 -FFC0 -FFC0 -ENDCHAR - -STARTCHAR Eacute -ENCODING 201 -SWIDTH 667 0 -DWIDTH 12 0 -BBX 10 18 1 0 -BITMAP -0380 -0700 -0E00 -0000 -FFC0 -FFC0 -E000 -E000 -E000 -E000 -FF80 -FF80 -E000 -E000 -E000 -E000 -FFC0 -FFC0 -ENDCHAR - -STARTCHAR Ecircumflex -ENCODING 202 -SWIDTH 667 0 -DWIDTH 12 0 -BBX 10 18 1 0 -BITMAP -0E00 -1F00 -3B80 -0000 -FFC0 -FFC0 -E000 -E000 -E000 -E000 -FF80 -FF80 -E000 -E000 -E000 -E000 -FFC0 -FFC0 -ENDCHAR - -STARTCHAR Edieresis -ENCODING 203 -SWIDTH 667 0 -DWIDTH 12 0 -BBX 10 17 1 0 -BITMAP -3300 -3300 -0000 -FFC0 -FFC0 -E000 -E000 -E000 -E000 -FF80 -FF80 -E000 -E000 -E000 -E000 -FFC0 -FFC0 -ENDCHAR - -STARTCHAR Igrave -ENCODING 204 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 18 -1 0 -BITMAP -E0 -70 -38 -00 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -ENDCHAR - -STARTCHAR Iacute -ENCODING 205 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 18 1 0 -BITMAP -38 -70 -E0 -00 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR Icircumflex -ENCODING 206 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 18 0 0 -BITMAP -20 -70 -D8 -00 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -ENDCHAR - -STARTCHAR Idieresis -ENCODING 207 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 17 0 0 -BITMAP -D8 -D8 -00 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -ENDCHAR - -STARTCHAR Eth -ENCODING 208 -SWIDTH 722 0 -DWIDTH 14 0 -BBX 13 14 0 0 -BITMAP -7F80 -7FE0 -70F0 -7070 -7038 -7038 -FE38 -FE38 -7038 -7038 -7070 -70F0 -7FE0 -7F80 -ENDCHAR - -STARTCHAR Ntilde -ENCODING 209 -SWIDTH 722 0 -DWIDTH 14 0 -BBX 12 18 1 0 -BITMAP -0EC0 -1FC0 -1B80 -0000 -E070 -F070 -F070 -F870 -FC70 -EC70 -EE70 -E670 -E770 -E370 -E1F0 -E1F0 -E0F0 -E070 -ENDCHAR - -STARTCHAR Ograve -ENCODING 210 -SWIDTH 778 0 -DWIDTH 16 0 -BBX 14 18 1 0 -BITMAP -0E00 -0700 -0380 -0000 -0FC0 -3FF0 -7878 -7038 -F03C -E01C -E01C -E01C -E01C -F03C -7038 -7878 -3FF0 -0FC0 -ENDCHAR - -STARTCHAR Oacute -ENCODING 211 -SWIDTH 778 0 -DWIDTH 16 0 -BBX 14 18 1 0 -BITMAP -00E0 -01C0 -0380 -0000 -0FC0 -3FF0 -7878 -7038 -F03C -E01C -E01C -E01C -E01C -F03C -7038 -7878 -3FF0 -0FC0 -ENDCHAR - -STARTCHAR Ocircumflex -ENCODING 212 -SWIDTH 778 0 -DWIDTH 16 0 -BBX 14 18 1 0 -BITMAP -0380 -07C0 -0EE0 -0000 -0FC0 -3FF0 -7878 -7038 -F03C -E01C -E01C -E01C -E01C -F03C -7038 -7878 -3FF0 -0FC0 -ENDCHAR - -STARTCHAR Otilde -ENCODING 213 -SWIDTH 778 0 -DWIDTH 16 0 -BBX 14 18 1 0 -BITMAP -0760 -0FE0 -0DC0 -0000 -0FC0 -3FF0 -7878 -7038 -F03C -E01C -E01C -E01C -E01C -F03C -7038 -7878 -3FF0 -0FC0 -ENDCHAR - -STARTCHAR Odieresis -ENCODING 214 -SWIDTH 778 0 -DWIDTH 16 0 -BBX 14 17 1 0 -BITMAP -0CC0 -0CC0 -0000 -0FC0 -3FF0 -7878 -7038 -F03C -E01C -E01C -E01C -E01C -F03C -7038 -7878 -3FF0 -0FC0 -ENDCHAR - -STARTCHAR multiply -ENCODING 215 -SWIDTH 584 0 -DWIDTH 11 0 -BBX 10 8 0 1 -BITMAP -E1C0 -7380 -3F00 -1E00 -1E00 -3F00 -7380 -E1C0 -ENDCHAR - -STARTCHAR Oslash -ENCODING 216 -SWIDTH 778 0 -DWIDTH 16 0 -BBX 15 14 0 0 -BITMAP -07EE -1FFC -3C38 -387C -78EE -71CE -738E -770E -7E0E -7C1E -381C -7C3C -EFF8 -C7E0 -ENDCHAR - -STARTCHAR Ugrave -ENCODING 217 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 18 1 0 -BITMAP -3800 -1C00 -0E00 -0000 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -71C0 -7FC0 -1F00 -ENDCHAR - -STARTCHAR Uacute -ENCODING 218 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 18 1 0 -BITMAP -0380 -0700 -0E00 -0000 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -71C0 -7FC0 -1F00 -ENDCHAR - -STARTCHAR Ucircumflex -ENCODING 219 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 18 1 0 -BITMAP -0E00 -1F00 -3B80 -0000 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -71C0 -7FC0 -1F00 -ENDCHAR - -STARTCHAR Udieresis -ENCODING 220 -SWIDTH 722 0 -DWIDTH 13 0 -BBX 11 17 1 0 -BITMAP -1980 -1980 -0000 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -71C0 -7FC0 -1F00 -ENDCHAR - -STARTCHAR Yacute -ENCODING 221 -SWIDTH 667 0 -DWIDTH 13 0 -BBX 11 18 1 0 -BITMAP -0380 -0700 -0E00 -0000 -E0E0 -E0E0 -E0E0 -71C0 -71C0 -3B80 -3B80 -1F00 -0E00 -0E00 -0E00 -0E00 -0E00 -0E00 -ENDCHAR - -STARTCHAR Thorn -ENCODING 222 -SWIDTH 667 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -E000 -E000 -E000 -FE00 -FF80 -E3C0 -E1C0 -E1C0 -E3C0 -FF80 -FE00 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR germandbls -ENCODING 223 -SWIDTH 611 0 -DWIDTH 10 0 -BBX 8 14 1 0 -BITMAP -3C -7E -E7 -E7 -E7 -E7 -EE -EE -E7 -E7 -E7 -E7 -EF -EE -ENDCHAR - -STARTCHAR agrave -ENCODING 224 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 14 1 0 -BITMAP -70 -38 -1C -00 -7C -FE -E7 -0F -3F -77 -E7 -E7 -FF -77 -ENDCHAR - -STARTCHAR aacute -ENCODING 225 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 14 1 0 -BITMAP -0E -1C -38 -00 -7C -FE -E7 -0F -3F -77 -E7 -E7 -FF -77 -ENDCHAR - -STARTCHAR acircumflex -ENCODING 226 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 14 1 0 -BITMAP -1C -3E -77 -00 -7C -FE -E7 -0F -3F -77 -E7 -E7 -FF -77 -ENDCHAR - -STARTCHAR atilde -ENCODING 227 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 14 1 0 -BITMAP -3B -7F -6E -00 -7C -FE -E7 -0F -3F -77 -E7 -E7 -FF -77 -ENDCHAR - -STARTCHAR adieresis -ENCODING 228 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 13 1 0 -BITMAP -36 -36 -00 -7C -FE -E7 -0F -3F -77 -E7 -E7 -FF -77 -ENDCHAR - -STARTCHAR aring -ENCODING 229 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 8 14 1 0 -BITMAP -1C -36 -36 -1C -7C -FE -E7 -0F -3F -77 -E7 -E7 -FF -77 -ENDCHAR - -STARTCHAR ae -ENCODING 230 -SWIDTH 889 0 -DWIDTH 16 0 -BBX 14 10 1 0 -BITMAP -7CF0 -FFF8 -E71C -0F1C -3FFC -7700 -E700 -EF9C -FFFC -79F0 -ENDCHAR - -STARTCHAR ccedilla -ENCODING 231 -SWIDTH 556 0 -DWIDTH 10 0 -BBX 9 15 1 -5 -BITMAP -1E00 -7F80 -7380 -E000 -E000 -E000 -E000 -7380 -7F80 -1E00 -1800 -1C00 -0600 -3E00 -3C00 -ENDCHAR - -STARTCHAR egrave -ENCODING 232 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 9 14 1 0 -BITMAP -3800 -1C00 -0E00 -0000 -1E00 -7F00 -7380 -E180 -FF80 -FF80 -E000 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR eacute -ENCODING 233 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 9 14 1 0 -BITMAP -0700 -0E00 -1C00 -0000 -1E00 -7F00 -7380 -E180 -FF80 -FF80 -E000 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR ecircumflex -ENCODING 234 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 9 14 1 0 -BITMAP -0E00 -1F00 -3B80 -0000 -1E00 -7F00 -7380 -E180 -FF80 -FF80 -E000 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR edieresis -ENCODING 235 -SWIDTH 556 0 -DWIDTH 11 0 -BBX 9 13 1 0 -BITMAP -3300 -3300 -0000 -1E00 -7F00 -7380 -E180 -FF80 -FF80 -E000 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR igrave -ENCODING 236 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 14 0 0 -BITMAP -E0 -70 -38 -00 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -ENDCHAR - -STARTCHAR iacute -ENCODING 237 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 14 0 0 -BITMAP -38 -70 -E0 -00 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -ENDCHAR - -STARTCHAR icircumflex -ENCODING 238 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 7 14 -1 0 -BITMAP -38 -7C -EE -00 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -ENDCHAR - -STARTCHAR idieresis -ENCODING 239 -SWIDTH 278 0 -DWIDTH 5 0 -BBX 5 13 0 0 -BITMAP -D8 -D8 -00 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -ENDCHAR - -STARTCHAR eth -ENCODING 240 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -7000 -1F00 -7C00 -0600 -1F00 -7F80 -7380 -E1C0 -E1C0 -E1C0 -E1C0 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR ntilde -ENCODING 241 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 14 1 0 -BITMAP -3B00 -7F00 -6E00 -0000 -EF00 -FF80 -F380 -E380 -E380 -E380 -E380 -E380 -E380 -E380 -ENDCHAR - -STARTCHAR ograve -ENCODING 242 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -3800 -1C00 -0E00 -0000 -1E00 -7F80 -7380 -E1C0 -E1C0 -E1C0 -E1C0 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR oacute -ENCODING 243 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -0700 -0E00 -1C00 -0000 -1E00 -7F80 -7380 -E1C0 -E1C0 -E1C0 -E1C0 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR ocircumflex -ENCODING 244 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -0E00 -1F00 -3B80 -0000 -1E00 -7F80 -7380 -E1C0 -E1C0 -E1C0 -E1C0 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR otilde -ENCODING 245 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 14 1 0 -BITMAP -1D80 -3F80 -3700 -0000 -1E00 -7F80 -7380 -E1C0 -E1C0 -E1C0 -E1C0 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR odieresis -ENCODING 246 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 13 1 0 -BITMAP -3300 -3300 -0000 -1E00 -7F80 -7380 -E1C0 -E1C0 -E1C0 -E1C0 -7380 -7F80 -1E00 -ENDCHAR - -STARTCHAR divide -ENCODING 247 -SWIDTH 584 0 -DWIDTH 11 0 -BBX 9 8 1 1 -BITMAP -1C00 -1C00 -0000 -FF80 -FF80 -0000 -1C00 -1C00 -ENDCHAR - -STARTCHAR oslash -ENCODING 248 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 12 10 0 0 -BITMAP -0F30 -3FE0 -38C0 -71E0 -77E0 -7EE0 -78E0 -31C0 -7FC0 -CF00 -ENDCHAR - -STARTCHAR ugrave -ENCODING 249 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 14 1 0 -BITMAP -7000 -3800 -1C00 -0000 -E380 -E380 -E380 -E380 -E380 -E380 -E380 -E780 -FF80 -7B80 -ENDCHAR - -STARTCHAR uacute -ENCODING 250 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 14 1 0 -BITMAP -0700 -0E00 -1C00 -0000 -E380 -E380 -E380 -E380 -E380 -E380 -E380 -E780 -FF80 -7B80 -ENDCHAR - -STARTCHAR ucircumflex -ENCODING 251 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 14 1 0 -BITMAP -1C00 -3E00 -7700 -0000 -E380 -E380 -E380 -E380 -E380 -E380 -E380 -E780 -FF80 -7B80 -ENDCHAR - -STARTCHAR udieresis -ENCODING 252 -SWIDTH 611 0 -DWIDTH 11 0 -BBX 9 13 1 0 -BITMAP -3600 -3600 -0000 -E380 -E380 -E380 -E380 -E380 -E380 -E380 -E780 -FF80 -7B80 -ENDCHAR - -STARTCHAR yacute -ENCODING 253 -SWIDTH 556 0 -DWIDTH 9 0 -BBX 9 18 0 -4 -BITMAP -0700 -0E00 -1C00 -0000 -E380 -E380 -E380 -7700 -7700 -7700 -3E00 -3E00 -1C00 -1C00 -1C00 -1800 -7800 -7000 -ENDCHAR - -STARTCHAR thorn -ENCODING 254 -SWIDTH 611 0 -DWIDTH 12 0 -BBX 10 18 1 -4 -BITMAP -E000 -E000 -E000 -E000 -EF00 -FF80 -F380 -E1C0 -E1C0 -E1C0 -E1C0 -F380 -FF80 -EF00 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR ydieresis -ENCODING 255 -SWIDTH 556 0 -DWIDTH 9 0 -BBX 9 17 0 -4 -BITMAP -3600 -3600 -0000 -E380 -E380 -E380 -7700 -7700 -7700 -3E00 -3E00 -1C00 -1C00 -1C00 -1800 -7800 -7000 -ENDCHAR - -ENDFONT diff --git a/src/fonts/helvB18.cc b/src/fonts/helvB18.cc deleted file mode 100644 index 5b82fa7..0000000 Binary files a/src/fonts/helvB18.cc and /dev/null differ diff --git a/src/fonts/helvB24-ISO8859-1.pcf b/src/fonts/helvB24-ISO8859-1.pcf deleted file mode 100644 index 6309e1e..0000000 Binary files a/src/fonts/helvB24-ISO8859-1.pcf and /dev/null differ diff --git a/src/fonts/helvB24.bdf b/src/fonts/helvB24.bdf deleted file mode 100644 index 971b857..0000000 --- a/src/fonts/helvB24.bdf +++ /dev/null @@ -1,4889 +0,0 @@ -STARTFONT 2.1 -FONT -Adobe-Helvetica-Bold-R-Normal--24-240-75-75-P-138-ISO8859-1 -SIZE 24 75 75 -FONTBOUNDINGBOX 24 29 -1 -5 - -STARTPROPERTIES 28 -FOUNDRY "Adobe" -FAMILY_NAME "Helvetica" -WEIGHT_NAME "Bold" -SLANT "R" -SETWIDTH_NAME "Normal" -ADD_STYLE_NAME "" -PIXEL_SIZE 24 -POINT_SIZE 240 -RESOLUTION_X 75 -RESOLUTION_Y 75 -SPACING "P" -AVERAGE_WIDTH 138 -CHARSET_REGISTRY "ISO8859" -CHARSET_ENCODING "1" -CAP_HEIGHT 19 -X_HEIGHT 14 -FACE_NAME "Helvetica Bold" -COPYRIGHT "Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved." -NOTICE "Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries. " -_DEC_DEVICE_FONTNAMES "PS=Helvetica-Bold" -RELATIVE_SETWIDTH 50 -RELATIVE_WEIGHT 70 -FULL_NAME "Helvetica Bold" -WEIGHT 10 -QUAD_WIDTH 15 -DEFAULT_CHAR 0 -FONT_DESCENT 5 -FONT_ASCENT 22 -ENDPROPERTIES - -CHARS 192 - -STARTCHAR defaultchar -ENCODING 0 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 15 19 2 0 -BITMAP -AAAA -0000 -8002 -0000 -8002 -0000 -8002 -0000 -8002 -0000 -8002 -0000 -8002 -0000 -8002 -0000 -8002 -0000 -AAAA -ENDCHAR - -STARTCHAR space -ENCODING 32 -SWIDTH 278 0 -DWIDTH 6 0 -BBX 1 1 0 0 -BITMAP -00 -ENDCHAR - -STARTCHAR exclam -ENCODING 33 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 3 19 2 0 -BITMAP -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -00 -00 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR quotedbl -ENCODING 34 -SWIDTH 474 0 -DWIDTH 9 0 -BBX 5 6 2 13 -BITMAP -D8 -D8 -D8 -D8 -D8 -90 -ENDCHAR - -STARTCHAR numbersign -ENCODING 35 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 18 0 0 -BITMAP -0CC0 -0CC0 -0CC0 -0CC0 -0CC0 -7FF0 -7FF0 -1980 -1980 -1980 -1980 -FFE0 -FFE0 -3300 -3300 -3300 -3300 -3300 -ENDCHAR - -STARTCHAR dollar -ENCODING 36 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 21 0 -2 -BITMAP -0600 -3F80 -7FC0 -F6E0 -E6E0 -E6E0 -F600 -7E00 -3E00 -0F00 -07C0 -07E0 -06F0 -E670 -E670 -E670 -F6F0 -7FE0 -1FC0 -0600 -0600 -ENDCHAR - -STARTCHAR percent -ENCODING 37 -SWIDTH 889 0 -DWIDTH 22 0 -BBX 21 18 0 0 -BITMAP -000700 -3E0700 -7F0E00 -E38E00 -C19C00 -C19C00 -E3B800 -7F3800 -3E7000 -007000 -00E3E0 -00E7F0 -01CE38 -01CC18 -038C18 -038E38 -0707F0 -0703E0 -ENDCHAR - -STARTCHAR ampersand -ENCODING 38 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 18 1 0 -BITMAP -0F80 -1FC0 -3DE0 -38E0 -38E0 -38E0 -1DC0 -0F80 -1F00 -3F9C -7BDC -71FC -E0F8 -E070 -E0F8 -F1FC -7FCE -1F87 -ENDCHAR - -STARTCHAR quotesingle -ENCODING 39 -SWIDTH 238 0 -DWIDTH 6 0 -BBX 2 6 2 13 -BITMAP -C0 -C0 -C0 -C0 -C0 -80 -ENDCHAR - -STARTCHAR parenleft -ENCODING 40 -SWIDTH 333 0 -DWIDTH 8 0 -BBX 6 24 1 -5 -BITMAP -0C -1C -38 -38 -70 -70 -60 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -60 -70 -70 -38 -38 -1C -0C -ENDCHAR - -STARTCHAR parenright -ENCODING 41 -SWIDTH 333 0 -DWIDTH 8 0 -BBX 6 24 1 -5 -BITMAP -C0 -E0 -70 -70 -38 -38 -18 -1C -1C -1C -1C -1C -1C -1C -1C -1C -1C -18 -38 -38 -70 -70 -E0 -C0 -ENDCHAR - -STARTCHAR asterisk -ENCODING 42 -SWIDTH 389 0 -DWIDTH 10 0 -BBX 8 7 1 12 -BITMAP -18 -18 -DB -FF -3C -66 -66 -ENDCHAR - -STARTCHAR plus -ENCODING 43 -SWIDTH 584 0 -DWIDTH 15 0 -BBX 11 12 2 1 -BITMAP -0E00 -0E00 -0E00 -0E00 -0E00 -FFE0 -FFE0 -0E00 -0E00 -0E00 -0E00 -0E00 -ENDCHAR - -STARTCHAR comma -ENCODING 44 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 3 6 2 -3 -BITMAP -E0 -E0 -E0 -60 -60 -C0 -ENDCHAR - -STARTCHAR hyphen -ENCODING 45 -SWIDTH 333 0 -DWIDTH 8 0 -BBX 7 3 0 6 -BITMAP -FE -FE -FE -ENDCHAR - -STARTCHAR period -ENCODING 46 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 3 3 2 0 -BITMAP -E0 -E0 -E0 -ENDCHAR - -STARTCHAR slash -ENCODING 47 -SWIDTH 278 0 -DWIDTH 8 0 -BBX 8 19 0 0 -BITMAP -07 -07 -06 -06 -0E -0C -0C -1C -1C -18 -18 -38 -30 -30 -70 -60 -60 -E0 -E0 -ENDCHAR - -STARTCHAR zero -ENCODING 48 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 18 0 0 -BITMAP -1F80 -3FC0 -79E0 -70E0 -70E0 -E070 -E070 -E070 -E070 -E070 -E070 -E070 -E070 -70E0 -70E0 -79E0 -3FC0 -1F80 -ENDCHAR - -STARTCHAR one -ENCODING 49 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 7 18 2 0 -BITMAP -0E -0E -1E -FE -FE -0E -0E -0E -0E -0E -0E -0E -0E -0E -0E -0E -0E -0E -ENDCHAR - -STARTCHAR two -ENCODING 50 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 18 0 0 -BITMAP -1F00 -7FC0 -71E0 -E0E0 -E070 -E070 -0070 -00E0 -01E0 -03C0 -0780 -1F00 -3C00 -7800 -F000 -E000 -FFF0 -FFF0 -ENDCHAR - -STARTCHAR three -ENCODING 51 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 18 0 0 -BITMAP -1F00 -7FC0 -71C0 -E0E0 -E0E0 -E0E0 -00E0 -01C0 -0F80 -0FE0 -00E0 -0070 -0070 -E070 -E0F0 -71E0 -7FE0 -1F80 -ENDCHAR - -STARTCHAR four -ENCODING 52 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 18 0 0 -BITMAP -01C0 -03C0 -03C0 -07C0 -07C0 -0DC0 -1DC0 -19C0 -31C0 -71C0 -61C0 -E1C0 -FFF0 -FFF0 -01C0 -01C0 -01C0 -01C0 -ENDCHAR - -STARTCHAR five -ENCODING 53 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 18 0 0 -BITMAP -7FE0 -7FE0 -7000 -7000 -7000 -7000 -7F80 -7FC0 -71E0 -00E0 -0070 -0070 -0070 -E070 -E0F0 -F1E0 -7FC0 -1F80 -ENDCHAR - -STARTCHAR six -ENCODING 54 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 18 0 0 -BITMAP -0F80 -3FE0 -78E0 -7070 -E070 -E000 -E000 -EF00 -FFC0 -F9E0 -F0E0 -E070 -E070 -E070 -70E0 -79E0 -3FC0 -1F80 -ENDCHAR - -STARTCHAR seven -ENCODING 55 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 18 0 0 -BITMAP -FFF0 -FFF0 -00F0 -00E0 -01C0 -01C0 -0380 -0380 -0700 -0700 -0E00 -0E00 -1E00 -1C00 -1C00 -3C00 -3800 -3800 -ENDCHAR - -STARTCHAR eight -ENCODING 56 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 18 0 0 -BITMAP -0F00 -3FC0 -39C0 -70E0 -70E0 -70E0 -70E0 -39C0 -1F80 -3FC0 -70E0 -E070 -E070 -E070 -E070 -70E0 -7FE0 -1F80 -ENDCHAR - -STARTCHAR nine -ENCODING 57 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 12 18 0 0 -BITMAP -1F80 -7FC0 -79E0 -F0E0 -E070 -E070 -E070 -E070 -F0F0 -79F0 -7FF0 -1F70 -0070 -0070 -E0E0 -F3E0 -7FC0 -1F00 -ENDCHAR - -STARTCHAR colon -ENCODING 58 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 3 14 2 0 -BITMAP -E0 -E0 -E0 -00 -00 -00 -00 -00 -00 -00 -00 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR semicolon -ENCODING 59 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 3 17 2 -3 -BITMAP -E0 -E0 -E0 -00 -00 -00 -00 -00 -00 -00 -00 -E0 -E0 -E0 -60 -60 -C0 -ENDCHAR - -STARTCHAR less -ENCODING 60 -SWIDTH 584 0 -DWIDTH 15 0 -BBX 13 12 0 1 -BITMAP -0038 -00F8 -03E0 -0F80 -3E00 -F000 -F000 -3E00 -0F80 -03E0 -00F8 -0038 -ENDCHAR - -STARTCHAR equal -ENCODING 61 -SWIDTH 584 0 -DWIDTH 14 0 -BBX 10 6 2 4 -BITMAP -FFC0 -FFC0 -0000 -0000 -FFC0 -FFC0 -ENDCHAR - -STARTCHAR greater -ENCODING 62 -SWIDTH 584 0 -DWIDTH 14 0 -BBX 13 12 0 1 -BITMAP -E000 -F800 -3E00 -0F80 -03E0 -0078 -0078 -03E0 -0F80 -3E00 -F800 -E000 -ENDCHAR - -STARTCHAR question -ENCODING 63 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 19 2 0 -BITMAP -1F80 -7FC0 -79E0 -F0E0 -E0E0 -E1E0 -01C0 -03C0 -0780 -0700 -0E00 -0E00 -0E00 -0E00 -0000 -0000 -0E00 -0E00 -0E00 -ENDCHAR - -STARTCHAR at -ENCODING 64 -SWIDTH 975 0 -DWIDTH 24 0 -BBX 22 22 1 -4 -BITMAP -01FF00 -07FFC0 -0F81F0 -1E0078 -3C0038 -787D9C -70FF9C -F1C71C -E3871C -E30E1C -E70E38 -E70C38 -E71C70 -E71C70 -E39DE0 -F3FFC0 -71F700 -780000 -3C0000 -1F0700 -0FFF00 -03FC00 -ENDCHAR - -STARTCHAR A -ENCODING 65 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 19 1 0 -BITMAP -03C0 -03C0 -07E0 -07E0 -0E60 -0E70 -0E70 -1C38 -1C38 -1C38 -381C -381C -3FFC -7FFE -700E -700E -E007 -E007 -E007 -ENDCHAR - -STARTCHAR B -ENCODING 66 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 15 19 2 0 -BITMAP -FFE0 -FFF8 -E078 -E01C -E01C -E01C -E01C -E038 -FFF0 -FFF8 -E01C -E00E -E00E -E00E -E00E -E01E -E07C -FFF8 -FFE0 -ENDCHAR - -STARTCHAR C -ENCODING 67 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 19 1 0 -BITMAP -07F0 -1FFC -3E3E -780F -7007 -F000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -F007 -7007 -780F -3E3E -1FFC -07F0 -ENDCHAR - -STARTCHAR D -ENCODING 68 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 16 19 2 0 -BITMAP -FFE0 -FFF8 -E07C -E01E -E00E -E00F -E007 -E007 -E007 -E007 -E007 -E007 -E007 -E00F -E00E -E01E -E07C -FFF8 -FFE0 -ENDCHAR - -STARTCHAR E -ENCODING 69 -SWIDTH 667 0 -DWIDTH 16 0 -BBX 13 19 2 0 -BITMAP -FFF0 -FFF0 -E000 -E000 -E000 -E000 -E000 -E000 -FFE0 -FFE0 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -FFF8 -FFF8 -ENDCHAR - -STARTCHAR F -ENCODING 70 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 12 19 2 0 -BITMAP -FFF0 -FFF0 -E000 -E000 -E000 -E000 -E000 -E000 -FFE0 -FFE0 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR G -ENCODING 71 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 17 19 1 0 -BITMAP -07F000 -1FFC00 -3E3E00 -780F00 -700700 -F00000 -E00000 -E00000 -E00000 -E07F80 -E07F80 -E00380 -E00380 -F00380 -700780 -780F80 -3E3F80 -1FFB80 -07F180 -ENDCHAR - -STARTCHAR H -ENCODING 72 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 15 19 2 0 -BITMAP -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -FFFE -FFFE -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -ENDCHAR - -STARTCHAR I -ENCODING 73 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 3 19 2 0 -BITMAP -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR J -ENCODING 74 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 11 19 1 0 -BITMAP -00E0 -00E0 -00E0 -00E0 -00E0 -00E0 -00E0 -00E0 -00E0 -00E0 -00E0 -00E0 -E0E0 -E0E0 -E0E0 -E0E0 -71E0 -7FC0 -3F80 -ENDCHAR - -STARTCHAR K -ENCODING 75 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 19 2 0 -BITMAP -E03C -E078 -E0F0 -E1E0 -E3C0 -E780 -EF00 -FE00 -FE00 -FF00 -F780 -E3C0 -E1E0 -E0F0 -E078 -E03C -E01E -E00F -E007 -ENDCHAR - -STARTCHAR L -ENCODING 76 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 12 19 2 0 -BITMAP -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -FFF0 -FFF0 -ENDCHAR - -STARTCHAR M -ENCODING 77 -SWIDTH 833 0 -DWIDTH 23 0 -BBX 19 19 2 0 -BITMAP -E000E0 -F001E0 -F001E0 -F803E0 -F803E0 -FC07E0 -EC06E0 -EE0EE0 -E60CE0 -E71CE0 -E71CE0 -E318E0 -E3B8E0 -E3B8E0 -E1F0E0 -E1F0E0 -E0E0E0 -E0E0E0 -E0E0E0 -ENDCHAR - -STARTCHAR N -ENCODING 78 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 15 19 2 0 -BITMAP -E00E -F00E -F00E -F80E -F80E -FC0E -EE0E -EE0E -E70E -E38E -E38E -E1CE -E0CE -E0EE -E07E -E03E -E03E -E01E -E00E -ENDCHAR - -STARTCHAR O -ENCODING 79 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 17 19 1 0 -BITMAP -07F000 -1FFC00 -3E3E00 -780F00 -700700 -F00780 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -F00780 -700700 -780F00 -3E3E00 -1FFC00 -07F000 -ENDCHAR - -STARTCHAR P -ENCODING 80 -SWIDTH 667 0 -DWIDTH 17 0 -BBX 14 19 2 0 -BITMAP -FFE0 -FFF8 -E038 -E01C -E01C -E01C -E01C -E038 -FFF8 -FFF0 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR Q -ENCODING 81 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 17 19 1 0 -BITMAP -07F000 -1FFC00 -3E3E00 -780F00 -700700 -F00780 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -F00780 -70F700 -787F00 -3E1E00 -1FFF00 -07F780 -ENDCHAR - -STARTCHAR R -ENCODING 82 -SWIDTH 722 0 -DWIDTH 17 0 -BBX 14 19 2 0 -BITMAP -FFE0 -FFF8 -E038 -E01C -E01C -E01C -E01C -E038 -FFF8 -FFF0 -E078 -E038 -E01C -E01C -E01C -E01C -E01C -E01C -E01C -ENDCHAR - -STARTCHAR S -ENCODING 83 -SWIDTH 667 0 -DWIDTH 17 0 -BBX 15 19 1 0 -BITMAP -07E0 -1FF8 -3C7C -781C -701C -7000 -7800 -3E00 -1FE0 -03F8 -007C -001E -000E -E00E -E00E -F01E -7C7C -3FF8 -0FE0 -ENDCHAR - -STARTCHAR T -ENCODING 84 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 15 19 0 0 -BITMAP -FFFE -FFFE -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -ENDCHAR - -STARTCHAR U -ENCODING 85 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 15 19 2 0 -BITMAP -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -F01E -701C -7C7C -3FF8 -0FE0 -ENDCHAR - -STARTCHAR V -ENCODING 86 -SWIDTH 667 0 -DWIDTH 18 0 -BBX 16 19 1 0 -BITMAP -E007 -E007 -F00F -700E -781E -381C -381C -3C3C -1C38 -1C38 -1E78 -0E70 -0E70 -0E70 -07E0 -07E0 -03C0 -03C0 -03C0 -ENDCHAR - -STARTCHAR W -ENCODING 87 -SWIDTH 944 0 -DWIDTH 23 0 -BBX 21 19 1 0 -BITMAP -E07038 -E07038 -E07038 -E07038 -70F870 -70F870 -70D870 -71DC70 -31DC60 -39DCE0 -398CE0 -3B8EE0 -1B8EC0 -1B8EC0 -1F07C0 -1F07C0 -0E0380 -0E0380 -0E0380 -ENDCHAR - -STARTCHAR X -ENCODING 88 -SWIDTH 667 0 -DWIDTH 18 0 -BBX 16 19 1 0 -BITMAP -E007 -F00F -781E -381C -1C38 -0E70 -0FF0 -07E0 -03C0 -03C0 -07E0 -0FF0 -0E70 -1C38 -3C3C -381C -700E -F00F -E007 -ENDCHAR - -STARTCHAR Y -ENCODING 89 -SWIDTH 667 0 -DWIDTH 17 0 -BBX 15 19 1 0 -BITMAP -E00E -F01E -701C -783C -3838 -3C78 -1C70 -1EF0 -0EE0 -0FE0 -07C0 -07C0 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -ENDCHAR - -STARTCHAR Z -ENCODING 90 -SWIDTH 611 0 -DWIDTH 16 0 -BBX 14 19 1 0 -BITMAP -FFFC -FFFC -003C -0078 -00F0 -01E0 -01E0 -03C0 -0780 -0780 -0F00 -1E00 -1E00 -3C00 -3800 -7800 -F000 -FFFC -FFFC -ENDCHAR - -STARTCHAR bracketleft -ENCODING 91 -SWIDTH 333 0 -DWIDTH 8 0 -BBX 5 24 1 -5 -BITMAP -F8 -F8 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -F8 -F8 -ENDCHAR - -STARTCHAR backslash -ENCODING 92 -SWIDTH 278 0 -DWIDTH 8 0 -BBX 8 19 0 0 -BITMAP -E0 -E0 -60 -60 -70 -30 -30 -38 -38 -18 -18 -1C -0C -0C -0E -06 -06 -07 -07 -ENDCHAR - -STARTCHAR bracketright -ENCODING 93 -SWIDTH 333 0 -DWIDTH 8 0 -BBX 5 24 2 -5 -BITMAP -F8 -F8 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -F8 -F8 -ENDCHAR - -STARTCHAR asciicircum -ENCODING 94 -SWIDTH 584 0 -DWIDTH 14 0 -BBX 11 9 1 10 -BITMAP -0E00 -0E00 -1F00 -1B00 -3B80 -71C0 -71C0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR underscore -ENCODING 95 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 14 2 0 -5 -BITMAP -FFFC -FFFC -ENDCHAR - -STARTCHAR grave -ENCODING 96 -SWIDTH 333 0 -DWIDTH 8 0 -BBX 6 4 1 15 -BITMAP -E0 -70 -38 -1C -ENDCHAR - -STARTCHAR a -ENCODING 97 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 14 1 0 -BITMAP -1F80 -3FC0 -71E0 -70E0 -00E0 -07E0 -3FE0 -7CE0 -F0E0 -E0E0 -E1E0 -F3E0 -7FF0 -3E70 -ENDCHAR - -STARTCHAR b -ENCODING 98 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 12 19 2 0 -BITMAP -E000 -E000 -E000 -E000 -E000 -EF80 -FFC0 -F9E0 -F0E0 -E070 -E070 -E070 -E070 -E070 -E070 -F0E0 -F9E0 -FFC0 -EF80 -ENDCHAR - -STARTCHAR c -ENCODING 99 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -1F80 -3FC0 -79E0 -70E0 -E000 -E000 -E000 -E000 -E000 -E000 -70E0 -79E0 -3FC0 -1F80 -ENDCHAR - -STARTCHAR d -ENCODING 100 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 12 19 1 0 -BITMAP -0070 -0070 -0070 -0070 -0070 -1F70 -3FF0 -79F0 -70F0 -E070 -E070 -E070 -E070 -E070 -E070 -70F0 -79F0 -3FF0 -1F70 -ENDCHAR - -STARTCHAR e -ENCODING 101 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 14 1 0 -BITMAP -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -FFF0 -FFF0 -E000 -E000 -7070 -78F0 -3FE0 -0F80 -ENDCHAR - -STARTCHAR f -ENCODING 102 -SWIDTH 333 0 -DWIDTH 9 0 -BBX 7 19 1 0 -BITMAP -1E -3E -38 -38 -38 -FE -FE -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -ENDCHAR - -STARTCHAR g -ENCODING 103 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 12 19 1 -5 -BITMAP -1F70 -3FF0 -79F0 -70F0 -E070 -E070 -E070 -E070 -E070 -E070 -70F0 -79F0 -3FF0 -1F70 -0070 -E070 -F0E0 -7FE0 -1F80 -ENDCHAR - -STARTCHAR h -ENCODING 104 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 19 2 0 -BITMAP -E000 -E000 -E000 -E000 -E000 -EF00 -FFC0 -F1C0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR i -ENCODING 105 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 3 19 2 0 -BITMAP -E0 -E0 -E0 -00 -00 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR j -ENCODING 106 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 5 24 0 -5 -BITMAP -38 -38 -38 -00 -00 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -F8 -F0 -ENDCHAR - -STARTCHAR k -ENCODING 107 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 19 2 0 -BITMAP -E000 -E000 -E000 -E000 -E000 -E1E0 -E3C0 -E780 -EF00 -FE00 -FC00 -FE00 -EF00 -E700 -E780 -E3C0 -E1C0 -E1E0 -E0F0 -ENDCHAR - -STARTCHAR l -ENCODING 108 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 3 19 2 0 -BITMAP -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR m -ENCODING 109 -SWIDTH 889 0 -DWIDTH 21 0 -BBX 17 14 2 0 -BITMAP -EF3E00 -FFFF00 -F3E780 -E1C380 -E1C380 -E1C380 -E1C380 -E1C380 -E1C380 -E1C380 -E1C380 -E1C380 -E1C380 -E1C380 -ENDCHAR - -STARTCHAR n -ENCODING 110 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 14 2 0 -BITMAP -EF80 -FFC0 -F1C0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR o -ENCODING 111 -SWIDTH 611 0 -DWIDTH 14 0 -BBX 12 14 1 0 -BITMAP -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -E070 -E070 -E070 -E070 -70E0 -79E0 -3FC0 -0F00 -ENDCHAR - -STARTCHAR p -ENCODING 112 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 12 19 2 -5 -BITMAP -EF80 -FFC0 -F9E0 -F0E0 -E070 -E070 -E070 -E070 -E070 -E070 -F0E0 -F9E0 -FFC0 -EF80 -E000 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR q -ENCODING 113 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 12 19 1 -5 -BITMAP -1F70 -3FF0 -79F0 -70F0 -E070 -E070 -E070 -E070 -E070 -E070 -70F0 -79F0 -3FF0 -1F70 -0070 -0070 -0070 -0070 -0070 -ENDCHAR - -STARTCHAR r -ENCODING 114 -SWIDTH 389 0 -DWIDTH 10 0 -BBX 7 14 2 0 -BITMAP -E6 -EE -FE -F0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR s -ENCODING 115 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -3F00 -7F80 -F3C0 -E1C0 -E000 -FC00 -7F80 -0FC0 -01E0 -E0E0 -E0E0 -F1E0 -7FC0 -3F80 -ENDCHAR - -STARTCHAR t -ENCODING 116 -SWIDTH 333 0 -DWIDTH 9 0 -BBX 7 18 1 0 -BITMAP -38 -38 -38 -38 -FE -FE -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -3E -1E -ENDCHAR - -STARTCHAR u -ENCODING 117 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 14 2 0 -BITMAP -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E1E0 -73E0 -7EE0 -1CE0 -ENDCHAR - -STARTCHAR v -ENCODING 118 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 14 1 0 -BITMAP -E070 -E070 -E070 -70E0 -70E0 -70E0 -39C0 -39C0 -39C0 -1F80 -1F80 -0F00 -0F00 -0F00 -ENDCHAR - -STARTCHAR w -ENCODING 119 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 19 14 0 0 -BITMAP -E0E0E0 -E0E0E0 -60E0C0 -71F1C0 -71F1C0 -31B180 -33B980 -3BBB80 -1B1B00 -1F1F00 -1F1F00 -0E0E00 -0E0E00 -0E0E00 -ENDCHAR - -STARTCHAR x -ENCODING 120 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -E0E0 -F1E0 -71C0 -3B80 -3F80 -1F00 -0E00 -1F00 -1F00 -3B80 -7BC0 -71C0 -F1E0 -E0E0 -ENDCHAR - -STARTCHAR y -ENCODING 121 -SWIDTH 556 0 -DWIDTH 15 0 -BBX 13 19 1 -5 -BITMAP -E038 -E038 -7038 -7870 -3870 -3CF0 -1CE0 -1CE0 -0FC0 -0FC0 -07C0 -0780 -0380 -0380 -0700 -0700 -0E00 -3E00 -3C00 -ENDCHAR - -STARTCHAR z -ENCODING 122 -SWIDTH 500 0 -DWIDTH 13 0 -BBX 11 14 1 0 -BITMAP -FFE0 -FFE0 -01C0 -0380 -0780 -0F00 -0E00 -1E00 -3C00 -3800 -7000 -F000 -FFE0 -FFE0 -ENDCHAR - -STARTCHAR braceleft -ENCODING 123 -SWIDTH 389 0 -DWIDTH 10 0 -BBX 7 24 1 -5 -BITMAP -0E -1C -38 -38 -38 -38 -38 -38 -38 -38 -70 -E0 -E0 -70 -38 -38 -38 -38 -38 -38 -38 -38 -1C -0E -ENDCHAR - -STARTCHAR bar -ENCODING 124 -SWIDTH 280 0 -DWIDTH 7 0 -BBX 3 24 2 -5 -BITMAP -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR braceright -ENCODING 125 -SWIDTH 389 0 -DWIDTH 10 0 -BBX 7 24 2 -5 -BITMAP -E0 -70 -38 -38 -38 -38 -38 -38 -38 -38 -1C -0E -0E -1C -38 -38 -38 -38 -38 -38 -38 -38 -70 -E0 -ENDCHAR - -STARTCHAR asciitilde -ENCODING 126 -SWIDTH 584 0 -DWIDTH 14 0 -BBX 11 4 1 5 -BITMAP -78E0 -FEE0 -EFE0 -E3C0 -ENDCHAR - -STARTCHAR space -ENCODING 160 -SWIDTH 278 0 -DWIDTH 6 0 -BBX 1 1 0 0 -BITMAP -00 -ENDCHAR - -STARTCHAR exclamdown -ENCODING 161 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 3 19 2 -5 -BITMAP -E0 -E0 -E0 -00 -00 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR cent -ENCODING 162 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 11 18 1 -2 -BITMAP -0180 -0180 -1F80 -3FC0 -7BE0 -7360 -E300 -E600 -E600 -E600 -E600 -EC00 -ECE0 -7DE0 -7FC0 -3F80 -1800 -1800 -ENDCHAR - -STARTCHAR sterling -ENCODING 163 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 13 18 0 0 -BITMAP -1F80 -3FC0 -70E0 -70E0 -7000 -7800 -3800 -1C00 -FFC0 -FFC0 -1C00 -1C00 -1C00 -3800 -3800 -7738 -FFF8 -F9F0 -ENDCHAR - -STARTCHAR currency -ENCODING 164 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 12 1 3 -BITMAP -C030 -EF70 -7FE0 -39C0 -70E0 -70E0 -70E0 -70E0 -39C0 -7FE0 -EF70 -C030 -ENDCHAR - -STARTCHAR yen -ENCODING 165 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 13 18 0 0 -BITMAP -E038 -E038 -7070 -7070 -38E0 -38E0 -1DC0 -1DC0 -7FF0 -7FF0 -0700 -7FF0 -7FF0 -0700 -0700 -0700 -0700 -0700 -ENDCHAR - -STARTCHAR brokenbar -ENCODING 166 -SWIDTH 280 0 -DWIDTH 7 0 -BBX 3 23 2 -4 -BITMAP -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -00 -00 -00 -00 -00 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR section -ENCODING 167 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 24 1 -5 -BITMAP -1F80 -3FC0 -79E0 -70E0 -78E0 -3C00 -1E00 -7F00 -F780 -E3C0 -E1E0 -E0E0 -7070 -7870 -3C70 -1EE0 -0FC0 -0780 -03C0 -71E0 -70E0 -79E0 -3FC0 -1F80 -ENDCHAR - -STARTCHAR dieresis -ENCODING 168 -SWIDTH 333 0 -DWIDTH 9 0 -BBX 7 2 1 16 -BITMAP -EE -EE -ENDCHAR - -STARTCHAR copyright -ENCODING 169 -SWIDTH 737 0 -DWIDTH 19 0 -BBX 17 17 1 0 -BITMAP -07F000 -1E3C00 -380E00 -700700 -63E300 -E73380 -CE3180 -CE0180 -CE0180 -CE0180 -CE3180 -E73180 -63E300 -700700 -380E00 -1E3C00 -07F000 -ENDCHAR - -STARTCHAR ordfeminine -ENCODING 170 -SWIDTH 370 0 -DWIDTH 10 0 -BBX 8 12 1 7 -BITMAP -7C -FE -C6 -1E -7E -E6 -C6 -FF -7B -00 -FF -FF -ENDCHAR - -STARTCHAR guillemotleft -ENCODING 171 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 10 8 1 3 -BITMAP -1DC0 -3B80 -7700 -EE00 -EE00 -7700 -3B80 -1DC0 -ENDCHAR - -STARTCHAR logicalnot -ENCODING 172 -SWIDTH 584 0 -DWIDTH 15 0 -BBX 12 7 1 4 -BITMAP -FFF0 -FFF0 -0030 -0030 -0030 -0030 -0030 -ENDCHAR - -STARTCHAR hyphen -ENCODING 173 -SWIDTH 333 0 -DWIDTH 8 0 -BBX 7 3 0 6 -BITMAP -FE -FE -FE -ENDCHAR - -STARTCHAR registered -ENCODING 174 -SWIDTH 737 0 -DWIDTH 19 0 -BBX 17 17 1 0 -BITMAP -07F000 -1E3C00 -380E00 -700700 -67E300 -E63380 -C63180 -C63180 -C7E180 -C6C180 -C66180 -E63180 -661B00 -700700 -380E00 -1E3C00 -07F000 -ENDCHAR - -STARTCHAR macron -ENCODING 175 -SWIDTH 333 0 -DWIDTH 9 0 -BBX 7 2 1 17 -BITMAP -FE -FE -ENDCHAR - -STARTCHAR degree -ENCODING 176 -SWIDTH 400 0 -DWIDTH 9 0 -BBX 8 7 0 11 -BITMAP -3C -66 -C3 -C3 -C3 -66 -3C -ENDCHAR - -STARTCHAR plusminus -ENCODING 177 -SWIDTH 584 0 -DWIDTH 15 0 -BBX 11 13 2 0 -BITMAP -0E00 -0E00 -0E00 -0E00 -FFE0 -FFE0 -0E00 -0E00 -0E00 -0E00 -0000 -FFE0 -FFE0 -ENDCHAR - -STARTCHAR twosuperior -ENCODING 178 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 6 10 0 8 -BITMAP -78 -FC -CC -0C -1C -78 -E0 -C0 -FC -FC -ENDCHAR - -STARTCHAR threesuperior -ENCODING 179 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 6 10 0 8 -BITMAP -78 -FC -CC -0C -38 -38 -0C -CC -FC -78 -ENDCHAR - -STARTCHAR acute -ENCODING 180 -SWIDTH 333 0 -DWIDTH 8 0 -BBX 6 4 1 15 -BITMAP -1C -38 -70 -E0 -ENDCHAR - -STARTCHAR mu -ENCODING 181 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 19 2 -5 -BITMAP -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E1E0 -F3E0 -FEE0 -ECE0 -E000 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR paragraph -ENCODING 182 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 11 24 1 -5 -BITMAP -0FE0 -3FE0 -7CC0 -7CC0 -FCC0 -FCC0 -FCC0 -FCC0 -FCC0 -7CC0 -7CC0 -3CC0 -1CC0 -0CC0 -0CC0 -0CC0 -0CC0 -0CC0 -0CC0 -0CC0 -0CC0 -0CC0 -0CC0 -0CC0 -ENDCHAR - -STARTCHAR periodcentered -ENCODING 183 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 3 3 2 6 -BITMAP -E0 -E0 -E0 -ENDCHAR - -STARTCHAR cedilla -ENCODING 184 -SWIDTH 333 0 -DWIDTH 8 0 -BBX 6 6 1 -5 -BITMAP -70 -78 -1C -1C -FC -78 -ENDCHAR - -STARTCHAR onesuperior -ENCODING 185 -SWIDTH 333 0 -DWIDTH 7 0 -BBX 4 10 0 8 -BITMAP -30 -30 -F0 -F0 -30 -30 -30 -30 -30 -30 -ENDCHAR - -STARTCHAR ordmasculine -ENCODING 186 -SWIDTH 365 0 -DWIDTH 10 0 -BBX 8 12 1 7 -BITMAP -3C -7E -E7 -C3 -C3 -C3 -E7 -7E -3C -00 -FF -FF -ENDCHAR - -STARTCHAR guillemotright -ENCODING 187 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 10 8 1 3 -BITMAP -EE00 -7700 -3B80 -1DC0 -1DC0 -3B80 -7700 -EE00 -ENDCHAR - -STARTCHAR onequarter -ENCODING 188 -SWIDTH 834 0 -DWIDTH 19 0 -BBX 17 18 1 0 -BITMAP -301800 -301800 -F03000 -F03000 -306000 -306000 -30C000 -30C000 -318600 -318E00 -031E00 -031E00 -063600 -066600 -0C7F80 -0C7F80 -180600 -180600 -ENDCHAR - -STARTCHAR onehalf -ENCODING 189 -SWIDTH 834 0 -DWIDTH 19 0 -BBX 16 18 1 0 -BITMAP -3018 -3018 -F030 -F030 -3060 -3060 -30C0 -30C0 -319E -31BF -0333 -0303 -0607 -061E -0C38 -0C30 -183F -183F -ENDCHAR - -STARTCHAR threequarters -ENCODING 190 -SWIDTH 834 0 -DWIDTH 19 0 -BBX 17 18 1 0 -BITMAP -781800 -FC1800 -CC3000 -0C3000 -386000 -386000 -0CC000 -CCC000 -FD8600 -798E00 -031E00 -031E00 -063600 -066600 -0C7F80 -0C7F80 -180600 -180600 -ENDCHAR - -STARTCHAR questiondown -ENCODING 191 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 19 2 -5 -BITMAP -0E00 -0E00 -0E00 -0000 -0000 -0E00 -0E00 -0E00 -0E00 -1C00 -3C00 -7800 -7000 -F0E0 -E0E0 -E1E0 -F3C0 -7FC0 -3F00 -ENDCHAR - -STARTCHAR Agrave -ENCODING 192 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 24 1 0 -BITMAP -0E00 -0700 -0380 -01C0 -0000 -03C0 -03C0 -07E0 -07E0 -0E60 -0E70 -0E70 -1C38 -1C38 -1C38 -381C -381C -3FFC -7FFE -700E -700E -E007 -E007 -E007 -ENDCHAR - -STARTCHAR Aacute -ENCODING 193 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 24 1 0 -BITMAP -0038 -0070 -00E0 -01C0 -0000 -03C0 -03C0 -07E0 -07E0 -0E60 -0E70 -0E70 -1C38 -1C38 -1C38 -381C -381C -3FFC -7FFE -700E -700E -E007 -E007 -E007 -ENDCHAR - -STARTCHAR Acircumflex -ENCODING 194 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 24 1 0 -BITMAP -01C0 -03E0 -0770 -0E38 -0000 -03C0 -03C0 -07E0 -07E0 -0E60 -0E70 -0E70 -1C38 -1C38 -1C38 -381C -381C -3FFC -7FFE -700E -700E -E007 -E007 -E007 -ENDCHAR - -STARTCHAR Atilde -ENCODING 195 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 23 1 0 -BITMAP -0798 -0FF8 -0CF0 -0000 -03C0 -03C0 -07E0 -07E0 -0E60 -0E70 -0E70 -1C38 -1C38 -1C38 -381C -381C -3FFC -7FFE -700E -700E -E007 -E007 -E007 -ENDCHAR - -STARTCHAR Adieresis -ENCODING 196 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 23 1 0 -BITMAP -0E70 -0E70 -0000 -0000 -03C0 -03C0 -07E0 -07E0 -0E60 -0E70 -0E70 -1C38 -1C38 -1C38 -381C -381C -3FFC -7FFE -700E -700E -E007 -E007 -E007 -ENDCHAR - -STARTCHAR Aring -ENCODING 197 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 23 1 0 -BITMAP -03C0 -0660 -0660 -0660 -03C0 -03C0 -07E0 -07E0 -0E60 -0E70 -0E70 -1C38 -1C38 -1C38 -381C -381C -3FFC -7FFE -700E -700E -E007 -E007 -E007 -ENDCHAR - -STARTCHAR AE -ENCODING 198 -SWIDTH 1000 0 -DWIDTH 24 0 -BBX 22 19 1 0 -BITMAP -03FFF8 -03FFF8 -07F000 -067000 -0E7000 -0E7000 -0E7000 -1C7000 -1C7FF0 -1C7FF0 -387000 -387000 -3FF000 -7FF000 -707000 -707000 -E07000 -E07FFC -E07FFC -ENDCHAR - -STARTCHAR Ccedilla -ENCODING 199 -SWIDTH 722 0 -DWIDTH 18 0 -BBX 16 24 1 -5 -BITMAP -07F0 -1FFC -3E3E -780F -7007 -F000 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -F007 -7007 -780F -3E3E -1FFC -07F0 -03C0 -00E0 -00E0 -07E0 -03C0 -ENDCHAR - -STARTCHAR Egrave -ENCODING 200 -SWIDTH 667 0 -DWIDTH 16 0 -BBX 13 24 2 0 -BITMAP -7000 -3800 -1C00 -0E00 -0000 -FFF0 -FFF0 -E000 -E000 -E000 -E000 -E000 -E000 -FFE0 -FFE0 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -FFF8 -FFF8 -ENDCHAR - -STARTCHAR Eacute -ENCODING 201 -SWIDTH 667 0 -DWIDTH 16 0 -BBX 13 24 2 0 -BITMAP -00E0 -01C0 -0380 -0700 -0000 -FFF0 -FFF0 -E000 -E000 -E000 -E000 -E000 -E000 -FFE0 -FFE0 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -FFF8 -FFF8 -ENDCHAR - -STARTCHAR Ecircumflex -ENCODING 202 -SWIDTH 667 0 -DWIDTH 16 0 -BBX 13 24 2 0 -BITMAP -0700 -0F80 -1DC0 -38E0 -0000 -FFF0 -FFF0 -E000 -E000 -E000 -E000 -E000 -E000 -FFE0 -FFE0 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -FFF8 -FFF8 -ENDCHAR - -STARTCHAR Edieresis -ENCODING 203 -SWIDTH 667 0 -DWIDTH 16 0 -BBX 13 23 2 0 -BITMAP -39C0 -39C0 -0000 -0000 -FFF0 -FFF0 -E000 -E000 -E000 -E000 -E000 -E000 -FFE0 -FFE0 -E000 -E000 -E000 -E000 -E000 -E000 -E000 -FFF8 -FFF8 -ENDCHAR - -STARTCHAR Igrave -ENCODING 204 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 6 24 0 0 -BITMAP -E0 -70 -38 -1C -00 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -ENDCHAR - -STARTCHAR Iacute -ENCODING 205 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 6 24 2 0 -BITMAP -1C -38 -70 -E0 -00 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -E0 -ENDCHAR - -STARTCHAR Icircumflex -ENCODING 206 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 9 24 -1 0 -BITMAP -1C00 -3E00 -7700 -E380 -0000 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -ENDCHAR - -STARTCHAR Idieresis -ENCODING 207 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 7 23 0 0 -BITMAP -EE -EE -00 -00 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -ENDCHAR - -STARTCHAR Eth -ENCODING 208 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 19 19 -1 0 -BITMAP -1FFC00 -1FFF00 -1C0F80 -1C03C0 -1C01C0 -1C01E0 -1C00E0 -1C00E0 -FFC0E0 -FFC0E0 -1C00E0 -1C00E0 -1C00E0 -1C01E0 -1C01C0 -1C03C0 -1C0F80 -1FFF00 -1FFC00 -ENDCHAR - -STARTCHAR Ntilde -ENCODING 209 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 15 23 2 0 -BITMAP -0E30 -1FF0 -19E0 -0000 -E00E -F00E -F00E -F80E -F80E -FC0E -EE0E -EE0E -E70E -E38E -E38E -E1CE -E0CE -E0EE -E07E -E03E -E03E -E01E -E00E -ENDCHAR - -STARTCHAR Ograve -ENCODING 210 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 17 24 1 0 -BITMAP -070000 -038000 -01C000 -00E000 -000000 -07F000 -1FFC00 -3E3E00 -780F00 -700700 -F00780 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -F00780 -700700 -780F00 -3E3E00 -1FFC00 -07F000 -ENDCHAR - -STARTCHAR Oacute -ENCODING 211 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 17 24 1 0 -BITMAP -003800 -007000 -00E000 -01C000 -000000 -07F000 -1FFC00 -3E3E00 -780F00 -700700 -F00780 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -F00780 -700700 -780F00 -3E3E00 -1FFC00 -07F000 -ENDCHAR - -STARTCHAR Ocircumflex -ENCODING 212 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 17 24 1 0 -BITMAP -01C000 -03E000 -077000 -0E3800 -000000 -07F000 -1FFC00 -3E3E00 -780F00 -700700 -F00780 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -F00780 -700700 -780F00 -3E3E00 -1FFC00 -07F000 -ENDCHAR - -STARTCHAR Otilde -ENCODING 213 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 17 24 1 0 -BITMAP -079800 -0FF800 -0CF000 -000000 -000000 -07F000 -1FFC00 -3E3E00 -780F00 -700700 -F00780 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -F00780 -700700 -780F00 -3E3E00 -1FFC00 -07F000 -ENDCHAR - -STARTCHAR Odieresis -ENCODING 214 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 17 23 1 0 -BITMAP -0E3800 -0E3800 -000000 -000000 -07F000 -1FFC00 -3E3E00 -780F00 -700700 -F00780 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -E00380 -F00780 -700700 -780F00 -3E3E00 -1FFC00 -07F000 -ENDCHAR - -STARTCHAR multiply -ENCODING 215 -SWIDTH 584 0 -DWIDTH 15 0 -BBX 12 12 1 1 -BITMAP -4020 -E070 -70E0 -39C0 -1F80 -0F00 -0F00 -1F80 -39C0 -70E0 -E070 -4020 -ENDCHAR - -STARTCHAR Oslash -ENCODING 216 -SWIDTH 778 0 -DWIDTH 19 0 -BBX 19 19 0 0 -BITMAP -03F860 -0FFEE0 -1F1FC0 -3C0380 -380780 -780FC0 -701DC0 -7039C0 -7071C0 -70E1C0 -71C1C0 -7381C0 -7701C0 -7E03C0 -3C0380 -3C0780 -7F1F00 -EFFE00 -C3F800 -ENDCHAR - -STARTCHAR Ugrave -ENCODING 217 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 15 24 2 0 -BITMAP -0E00 -0700 -0380 -01C0 -0000 -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -F01E -F01E -701C -7C7C -3FF8 -0FE0 -ENDCHAR - -STARTCHAR Uacute -ENCODING 218 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 15 24 2 0 -BITMAP -0070 -00E0 -01C0 -0380 -0000 -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -F01E -F01E -701C -7C7C -3FF8 -0FE0 -ENDCHAR - -STARTCHAR Ucircumflex -ENCODING 219 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 15 24 2 0 -BITMAP -0780 -0FC0 -1CE0 -3870 -0000 -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -F01E -F01E -701C -7C7C -3FF8 -0FE0 -ENDCHAR - -STARTCHAR Udieresis -ENCODING 220 -SWIDTH 722 0 -DWIDTH 19 0 -BBX 15 23 2 0 -BITMAP -1C70 -1C70 -0000 -0000 -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -E00E -F01E -F01E -701C -7C7C -3FF8 -0FE0 -ENDCHAR - -STARTCHAR Yacute -ENCODING 221 -SWIDTH 667 0 -DWIDTH 17 0 -BBX 15 24 1 0 -BITMAP -0070 -00E0 -01C0 -0380 -0000 -F01E -701C -783C -3838 -3C78 -1C70 -1EF0 -0EE0 -0FE0 -07C0 -07C0 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -0380 -ENDCHAR - -STARTCHAR Thorn -ENCODING 222 -SWIDTH 667 0 -DWIDTH 17 0 -BBX 14 19 2 0 -BITMAP -E000 -E000 -E000 -E000 -FFE0 -FFF8 -E038 -E01C -E01C -E01C -E01C -E038 -FFF8 -FFF0 -E000 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR germandbls -ENCODING 223 -SWIDTH 611 0 -DWIDTH 14 0 -BBX 11 19 2 0 -BITMAP -1E00 -7F80 -F380 -E1C0 -E1C0 -E1C0 -E1C0 -E380 -EF00 -EF80 -E3C0 -E1C0 -E0E0 -E0E0 -E0E0 -E0E0 -E1C0 -EFC0 -EF80 -ENDCHAR - -STARTCHAR agrave -ENCODING 224 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -1C00 -0E00 -0700 -0380 -0000 -1F80 -3FC0 -71E0 -70E0 -00E0 -07E0 -3FE0 -7CE0 -F0E0 -E0E0 -E1E0 -F3E0 -7FF0 -3E70 -ENDCHAR - -STARTCHAR aacute -ENCODING 225 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -01C0 -0380 -0700 -0E00 -0000 -1F80 -3FC0 -71E0 -70E0 -00E0 -07E0 -3FE0 -7CE0 -F0E0 -E0E0 -E1E0 -F3E0 -7FF0 -3E70 -ENDCHAR - -STARTCHAR acircumflex -ENCODING 226 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -0700 -0F80 -1DC0 -38E0 -0000 -1F80 -3FC0 -71E0 -70E0 -00E0 -07E0 -3FE0 -7CE0 -F0E0 -E0E0 -E1E0 -F3E0 -7FF0 -3E70 -ENDCHAR - -STARTCHAR atilde -ENCODING 227 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -1E60 -3FE0 -33C0 -0000 -0000 -1F80 -3FC0 -71E0 -70E0 -00E0 -07E0 -3FE0 -7CE0 -F0E0 -E0E0 -E1E0 -F3E0 -7FF0 -3E70 -ENDCHAR - -STARTCHAR adieresis -ENCODING 228 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 18 1 0 -BITMAP -1DC0 -1DC0 -0000 -0000 -1F80 -3FC0 -71E0 -70E0 -00E0 -07E0 -3FE0 -7CE0 -F0E0 -E0E0 -E1E0 -F3E0 -7FF0 -3E70 -ENDCHAR - -STARTCHAR aring -ENCODING 229 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -0F00 -1980 -1980 -1980 -0F00 -1F80 -3FC0 -71E0 -70E0 -00E0 -07E0 -3FE0 -7CE0 -F0E0 -E0E0 -E1E0 -F3E0 -7FF0 -3E70 -ENDCHAR - -STARTCHAR ae -ENCODING 230 -SWIDTH 889 0 -DWIDTH 22 0 -BBX 20 14 1 0 -BITMAP -1F8F00 -3FFFC0 -71F9E0 -70F0E0 -00E070 -07E070 -3FFFF0 -7CFFF0 -F0E000 -E0E000 -E1F070 -F3F8F0 -7F3FE0 -3E0F80 -ENDCHAR - -STARTCHAR ccedilla -ENCODING 231 -SWIDTH 556 0 -DWIDTH 13 0 -BBX 11 19 1 -5 -BITMAP -1F80 -3FC0 -79E0 -70E0 -E000 -E000 -E000 -E000 -E000 -E000 -70E0 -79E0 -3FC0 -1F80 -1E00 -0700 -0700 -3F00 -1E00 -ENDCHAR - -STARTCHAR egrave -ENCODING 232 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -1C00 -0E00 -0700 -0380 -0000 -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -FFF0 -FFF0 -E000 -E000 -7070 -78F0 -3FE0 -0F80 -ENDCHAR - -STARTCHAR eacute -ENCODING 233 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -01C0 -0380 -0700 -0E00 -0000 -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -FFF0 -FFF0 -E000 -E000 -7070 -78F0 -3FE0 -0F80 -ENDCHAR - -STARTCHAR ecircumflex -ENCODING 234 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -0700 -0F80 -1DC0 -38E0 -0000 -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -FFF0 -FFF0 -E000 -E000 -7070 -78F0 -3FE0 -0F80 -ENDCHAR - -STARTCHAR edieresis -ENCODING 235 -SWIDTH 556 0 -DWIDTH 14 0 -BBX 12 18 1 0 -BITMAP -39C0 -39C0 -0000 -0000 -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -FFF0 -FFF0 -E000 -E000 -7070 -78F0 -3FE0 -0F80 -ENDCHAR - -STARTCHAR igrave -ENCODING 236 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 6 19 1 0 -BITMAP -E0 -70 -38 -1C -00 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -ENDCHAR - -STARTCHAR iacute -ENCODING 237 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 6 19 1 0 -BITMAP -1C -38 -70 -E0 -00 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -70 -ENDCHAR - -STARTCHAR icircumflex -ENCODING 238 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 9 19 -1 0 -BITMAP -1C00 -3E00 -7700 -E380 -0000 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -1C00 -ENDCHAR - -STARTCHAR idieresis -ENCODING 239 -SWIDTH 278 0 -DWIDTH 7 0 -BBX 7 18 0 0 -BITMAP -EE -EE -00 -00 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -38 -ENDCHAR - -STARTCHAR eth -ENCODING 240 -SWIDTH 611 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -E000 -39C0 -1F00 -3E00 -C300 -0F80 -3FC0 -79E0 -70E0 -E070 -E070 -E070 -E070 -E070 -E070 -70E0 -79E0 -3FC0 -0F00 -ENDCHAR - -STARTCHAR ntilde -ENCODING 241 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 19 2 0 -BITMAP -3CC0 -7FC0 -6780 -0000 -0000 -EF80 -FFC0 -F1C0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -ENDCHAR - -STARTCHAR ograve -ENCODING 242 -SWIDTH 611 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -1C00 -0E00 -0700 -0380 -0000 -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -E070 -E070 -E070 -E070 -70E0 -79E0 -3FC0 -0F00 -ENDCHAR - -STARTCHAR oacute -ENCODING 243 -SWIDTH 611 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -01C0 -0380 -0700 -0E00 -0000 -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -E070 -E070 -E070 -E070 -70E0 -79E0 -3FC0 -0F00 -ENDCHAR - -STARTCHAR ocircumflex -ENCODING 244 -SWIDTH 611 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -0700 -0F80 -1DC0 -38E0 -0000 -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -E070 -E070 -E070 -E070 -70E0 -79E0 -3FC0 -0F00 -ENDCHAR - -STARTCHAR otilde -ENCODING 245 -SWIDTH 611 0 -DWIDTH 14 0 -BBX 12 19 1 0 -BITMAP -1E60 -3FE0 -33C0 -0000 -0000 -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -E070 -E070 -E070 -E070 -70E0 -79E0 -3FC0 -0F00 -ENDCHAR - -STARTCHAR odieresis -ENCODING 246 -SWIDTH 611 0 -DWIDTH 14 0 -BBX 12 18 1 0 -BITMAP -1DC0 -1DC0 -0000 -0000 -0F00 -3FC0 -79E0 -70E0 -E070 -E070 -E070 -E070 -E070 -E070 -70E0 -79E0 -3FC0 -0F00 -ENDCHAR - -STARTCHAR divide -ENCODING 247 -SWIDTH 584 0 -DWIDTH 15 0 -BBX 11 12 2 1 -BITMAP -0E00 -0E00 -0E00 -0000 -0000 -FFE0 -FFE0 -0000 -0000 -0E00 -0E00 -0E00 -ENDCHAR - -STARTCHAR oslash -ENCODING 248 -SWIDTH 611 0 -DWIDTH 14 0 -BBX 14 14 0 0 -BITMAP -078C -1FF8 -3CF0 -3870 -70F8 -71F8 -73B8 -7738 -7E38 -7C38 -3870 -7CF0 -DFE0 -8780 -ENDCHAR - -STARTCHAR ugrave -ENCODING 249 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 19 2 0 -BITMAP -3800 -1C00 -0E00 -0700 -0000 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E1E0 -73E0 -7EE0 -1CE0 -ENDCHAR - -STARTCHAR uacute -ENCODING 250 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 19 2 0 -BITMAP -0380 -0700 -0E00 -1C00 -0000 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E1E0 -73E0 -7EE0 -1CE0 -ENDCHAR - -STARTCHAR ucircumflex -ENCODING 251 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 19 2 0 -BITMAP -0E00 -1F00 -3B80 -71C0 -0000 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E1E0 -73E0 -7EE0 -1CE0 -ENDCHAR - -STARTCHAR udieresis -ENCODING 252 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 11 18 2 0 -BITMAP -3B80 -3B80 -0000 -0000 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E0E0 -E1E0 -73E0 -7EE0 -1CE0 -ENDCHAR - -STARTCHAR yacute -ENCODING 253 -SWIDTH 556 0 -DWIDTH 15 0 -BBX 13 24 1 -5 -BITMAP -00E0 -01C0 -0380 -0700 -0000 -E038 -E038 -7038 -7870 -3870 -3CF0 -1CE0 -1CE0 -0FC0 -0FC0 -07C0 -0780 -0380 -0380 -0700 -0700 -0E00 -3E00 -3C00 -ENDCHAR - -STARTCHAR thorn -ENCODING 254 -SWIDTH 611 0 -DWIDTH 15 0 -BBX 12 24 2 -5 -BITMAP -E000 -E000 -E000 -E000 -E000 -EF80 -FFC0 -F9E0 -F0E0 -E070 -E070 -E070 -E070 -E070 -E070 -F0E0 -F9E0 -FFC0 -EF80 -E000 -E000 -E000 -E000 -E000 -ENDCHAR - -STARTCHAR ydieresis -ENCODING 255 -SWIDTH 556 0 -DWIDTH 15 0 -BBX 13 23 1 -5 -BITMAP -1CE0 -1CE0 -0000 -0000 -E038 -E038 -7038 -7870 -3870 -3CF0 -1CE0 -1CE0 -0FC0 -0FC0 -07C0 -0780 -0380 -0380 -0700 -0700 -0E00 -3E00 -3C00 -ENDCHAR - -ENDFONT diff --git a/src/fonts/helvB24.cc b/src/fonts/helvB24.cc deleted file mode 100644 index 0a31625..0000000 Binary files a/src/fonts/helvB24.cc and /dev/null differ diff --git a/src/fonts/licensehelv.txt b/src/fonts/licensehelv.txt deleted file mode 100644 index 0c39824..0000000 --- a/src/fonts/licensehelv.txt +++ /dev/null @@ -1,876 +0,0 @@ -The fonts were obtained from the debian package xfree86. -The copyright file from this package is included here. - - -Package: xfree86 -Obtained from: XFree86 CVS repository (anoncvs@anoncvs.xfree86.org:/cvs) -Upstream author(s): The XFree86 Project, Inc., et al. -Debian package author(s): Stephen Early, Mark Eichin, Branden Robinson - -Debian modifications to upstream sources: - - The following files were removed from the source package due to - non-DFSG-compliant licensing: - xc/fonts/scaled/Type1/COPYRIGHT.BH - xc/fonts/scaled/Type1/COPYRIGHT.IBM - xc/fonts/scaled/Type1/UTBI____.afm - xc/fonts/scaled/Type1/UTBI____.pfa - xc/fonts/scaled/Type1/UTB_____.afm - xc/fonts/scaled/Type1/UTB_____.pfa - xc/fonts/scaled/Type1/UTI_____.afm - xc/fonts/scaled/Type1/UTI_____.pfa - xc/fonts/scaled/Type1/UTRG____.afm - xc/fonts/scaled/Type1/UTRG____.pfa - xc/fonts/scaled/Type1/cour.afm - xc/fonts/scaled/Type1/cour.pfa - xc/fonts/scaled/Type1/courb.afm - xc/fonts/scaled/Type1/courb.pfa - xc/fonts/scaled/Type1/courbi.afm - xc/fonts/scaled/Type1/courbi.pfa - xc/fonts/scaled/Type1/couri.afm - xc/fonts/scaled/Type1/couri.pfa - xc/fonts/scaled/Type1/lcdxmo.afm - xc/fonts/scaled/Type1/lcdxmo.pfa - xc/fonts/scaled/Type1/lcdxmr.afm - xc/fonts/scaled/Type1/lcdxmr.pfa - xc/fonts/scaled/Type1/lcdxro.afm - xc/fonts/scaled/Type1/lcdxro.pfa - xc/fonts/scaled/Type1/lcdxrr.afm - xc/fonts/scaled/Type1/lcdxrr.pfa - xc/fonts/scaled/Type1/lcdxso.afm - xc/fonts/scaled/Type1/lcdxso.pfa - xc/fonts/scaled/Type1/lcdxsr.afm - xc/fonts/scaled/Type1/lcdxsr.pfa - - See the debian/patches directory for all other changes to upstream - source. - -Debian copyright(s)/license(s): - -Unless otherwise noted, all modifications and additions to XFree86 found in -this Debian package bear the following copyright and license terms: - -Copyright 1996-2001 Software in the Public Interest, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -SOFTWARE IN THE PUBLIC INTEREST, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Software in the Public -Interest, Inc. shall not be used in advertising or otherwise to promote the -sale, use or other dealings in this Software without prior written -authorization from Software in the Public Interest, Inc. - -Upstream copyright(s)/license(s): - -******************************************************************************** - -1. XFree86 License - -XFree86 code without an explicit copyright is covered by the following copy- -right/license: - -Copyright (C) 1994-2001 The XFree86 Project, Inc. All Rights Reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is fur- -nished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- -NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- -NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the XFree86 Project shall not -be used in advertising or otherwise to promote the sale, use or other deal- -ings in this Software without prior written authorization from the XFree86 -Project. - -2. Other Licenses - -Portions of code are covered by the following licenses/copyrights: - -2.1 X Consortium - -Copyright (C) 1996 X Consortium - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is fur- -nished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- -NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X -CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from the X Consortium. - -X Window System is a trademark of X Consortium, Inc. - -2.2 Berkeley-based copyrights: - -2.2.1 General - -Redistribution and use in source and binary forms, with or without modifica- -tion, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- -CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- -CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- -ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE. - -2.2.2 UCB/LBL - -Copyright (c) 1993 The Regents of the University of California. All rights -reserved. - -This software was developed by the Computer Systems Engineering group at -Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and contributed to -Berkeley. - -All advertising materials mentioning features or use of this software must -display the following acknowledgement: This product includes software devel- -oped by the University of California, Lawrence Berkeley Laboratory. - -Redistribution and use in source and binary forms, with or without modifica- -tion, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. All advertising materials mentioning features or use of this software - must display the following acknowledgement: This product includes soft- - ware developed by the University of California, Berkeley and its con- - tributors. - - 4. Neither the name of the University nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS- -CLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -2.3 NVIDIA Corp - -Copyright (c) 1996 NVIDIA, Corp. All rights reserved. - -NOTICE TO USER: The source code is copyrighted under U.S. and international -laws. NVIDIA, Corp. of Sunnyvale, California owns the copyright and as -design patents pending on the design and interface of the NV chips. Users -and possessors of this source code are hereby granted a nonexclusive, roy- -alty-free copyright and design patent license to use this code in individual -and commercial software. - -Any use of this source code must include, in the user documentation and -internal comments to the code, notices to the end user as follows: - -Copyright (c) 1996 NVIDIA, Corp. NVIDIA design patents pending in the U.S. -and foreign countries. - -NVIDIA, CORP. MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE -CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WAR- -RANTY OF ANY KIND. NVIDIA, CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO -THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA, CORP. BE LIABLE -FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY DAM- -AGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE. - -2.4 GLX Public License - -GLX PUBLIC LICENSE (Version 1.0 (2/11/99)) ("License") - -Subject to any third party claims, Silicon Graphics, Inc. ("SGI") hereby -grants permission to Recipient (defined below), under Recipient's copyrights -in the Original Software (defined below), to use, copy, modify, merge, pub- -lish, distribute, sublicense and/or sell copies of Subject Software (defined -below), and to permit persons to whom the Subject Software is furnished in -accordance with this License to do the same, subject to all of the following -terms and conditions, which Recipient accepts by engaging in any such use, -copying, modifying, merging, publishing, distributing, sublicensing or sell- -ing: - -1. Definitions. - - (a) "Original Software" means source code of computer software code - which is described in Exhibit A as Original Software. - - (b) "Modifications" means any addition to or deletion from the sub- - stance or structure of either the Original Software or any previous - Modifications. When Subject Software is released as a series of - files, a Modification means (i) any addition to or deletion from - the contents of a file containing Original Software or previous - Modifications and (ii) any new file that contains any part of the - Original Code or previous Modifications. - - (c) "Subject Software" means the Original Software or Modifications - or the combination of the Original Software and Modifications, or - portions of any of the foregoing. - - (d) "Recipient" means an individual or a legal entity exercising - rights under, and complying with all of the terms of, this License. - For legal entities, "Recipient" includes any entity which controls, - is controlled by, or is under common control with Recipient. For - purposes of this definition, "control" of an entity means (a) the - power, direct or indirect, to direct or manage such entity, or (b) - ownership of fifty percent (50%) or more of the outstanding shares - or beneficial ownership of such entity. - -2. Redistribution of Source Code Subject to These Terms. Redistributions of -Subject Software in source code form must retain the notice set forth in -Exhibit A, below, in every file. A copy of this License must be included in -any documentation for such Subject Software where the recipients' rights -relating to Subject Software are described. Recipient may distribute the -source code version of Subject Software under a license of Recipient's -choice, which may contain terms different from this License, provided that -(i) Recipient is in compliance with the terms of this License, and (ii) the -license terms include this Section 2 and Sections 3, 4, 7, 8, 10, 12 and 13 -of this License, which terms may not be modified or superseded by any other -terms of such license. If Recipient distributes the source code version under -a different license Recipient must make it absolutely clear that any terms -which differ from this License are offered by Recipient alone, not by SGI. -Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as -a result of any such terms Recipient offers. - -3. Redistribution in Executable Form. The notice set forth in Exhibit A must -be conspicuously included in any notice in an executable version of Subject -Software, related documentation or collateral in which Recipient describes -the user's rights relating to the Subject Software. Recipient may distribute -the executable version of Subject Software under a license of Recipient's -choice, which may contain terms different from this License, provided that -(i) Recipient is in compliance with the terms of this License, and (ii) the -license terms include this Section 3 and Sections 4, 7, 8, 10, 12 and 13 of -this License, which terms may not be modified or superseded by any other -terms of such license. If Recipient distributes the executable version under -a different license Recipient must make it absolutely clear that any terms -which differ from this License are offered by Recipient alone, not by SGI. -Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as -a result of any such terms Recipient offers. - -4. Termination. This License and the rights granted hereunder will terminate -automatically if Recipient fails to comply with terms herein and fails to -cure such breach within 30 days of the breach. Any sublicense to the Subject -Software which is properly granted shall survive any termination of this -License absent termination by the terms of such sublicense. Provisions which, -by their nature, must remain in effect beyond the termination of this License -shall survive. - -5. No Trademark Rights. This License does not grant any rights to use any -trade name, trademark or service mark whatsoever. No trade name, trademark or -service mark of SGI may be used to endorse or promote products derived from -the Subject Software without prior written permission of SGI. - -6. No Other Rights. This License does not grant any rights with respect to -the OpenGL API or to any software or hardware implementation thereof or to -any other software whatsoever, nor shall any other rights or licenses not -expressly granted hereunder arise by implication, estoppel or otherwise with -respect to the Subject Software. Title to and ownership of the Original Soft- -ware at all times remains with SGI. All rights in the Original Software not -expressly granted under this License are reserved. - -7. Compliance with Laws; Non-Infringement. Recipient shall comply with all -applicable laws and regulations in connection with use and distribution of -the Subject Software, including but not limited to, all export and import -control laws and regulations of the U.S. government and other countries. -Recipient may not distribute Subject Software that (i) in any way infringes -(directly or contributorily) the rights (including patent, copyright, trade -secret, trademark or other intellectual property rights of any kind) of any -other person or entity or (ii) breaches any representation or warranty, -express, implied or statutory, which under any applicable law it might be -deemed to have been distributed. - -8. Claims of Infringement. If Recipient at any time has knowledge of any one -or more third party claims that reproduction, modification, use, distribu- -tion, import or sale of Subject Software (including particular functionality -or code incorporated in Subject Software) infringes the third party's intel- -lectual property rights, Recipient must place in a well-identified web page -bearing the title "LEGAL" a description of each such claim and a description -of the party making each such claim in sufficient detail that a user of the -Subject Software will know whom to contact regarding the claim. Also, upon -gaining such knowledge of any such claim, Recipient must conspicuously -include the URL for such web page in the Exhibit A notice required under Sec- -tions 2 and 3, above, and in the text of any related documentation, license -agreement or collateral in which Recipient describes end user's rights relat- -ing to the Subject Software. If Recipient obtains such knowledge after it -makes Subject Software available to any other person or entity, Recipient -shall take other steps (such as notifying appropriate mailing lists or news- -groups) reasonably calculated to inform those who received the Subject Soft- -ware that new knowledge has been obtained. - -9. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, -WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, MER- -CHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON- INFRINGING. SGI ASSUMES NO -RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE -PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY SER- -VICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN -ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED -HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THE- -ORY, WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIA- -BILITY), CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR -ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY -CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK -STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER -COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF -THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY -TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO -THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO -NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, -SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT. - -11. Indemnity. Recipient shall be solely responsible for damages arising, -directly or indirectly, out of its utilization of rights under this License. -Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. -from and against any loss, liability, damages, costs or expenses (including -the payment of reasonable attorneys fees) arising out of Recipient's use, -modification, reproduction and distribution of the Subject Software or out of -any representation or warranty made by Recipient. - -12. U.S. Government End Users. The Subject Software is a "commercial item" -consisting of "commercial computer software" as such terms are defined in -title 48 of the Code of Federal Regulations and all U.S. Government End -Users acquire only the rights set forth in this License and are subject to -the terms of this License. - -13. Miscellaneous. This License represents the complete agreement concerning -subject matter hereof. If any provision of this License is held to be unen- -forceable, such provision shall be reformed so as to achieve as nearly as -possible the same economic effect as the original provision and the remainder -of this License will remain in effect. This License shall be governed by and -construed in accordance with the laws of the United States and the State of -California as applied to agreements entered into and to be performed entirely -within California between California residents. Any litigation relating to -this License shall be subject to the exclusive jurisdiction of the Federal -Courts of the Northern District of California (or, absent subject matter -jurisdiction in such courts, the courts of the State of California), with -venue lying exclusively in Santa Clara County, California, with the losing -party responsible for costs, including without limitation, court costs and -reasonable attorneys fees and expenses. The application of the United Nations -Convention on Contracts for the International Sale of Goods is expressly -excluded. Any law or regulation which provides that the language of a con- -tract shall be construed against the drafter shall not apply to this License. - -Exhibit A - -The contents of this file are subject to Sections 2, 3, 4, 7, 8, 10, 12 and -13 of the GLX Public License Version 1.0 (the "License"). You may not use -this file except in compliance with those sections of the License. You may -obtain a copy of the License at Silicon Graphics, Inc., attn: Legal Services, -2011 N. Shoreline Blvd., Mountain View, CA 94043 or at -http://www.sgi.com/software/opensource/glx/license.html. - -Software distributed under the License is distributed on an "AS IS" basis. -ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED -WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON- -INFRINGEMENT. See the License for the specific language governing rights and -limitations under the License. - -The Original Software is GLX version 1.2 source code, released February, -1999. The developer of the Original Software is Silicon Graphics, Inc. Those -portions of the Subject Software created by Silicon Graphics, Inc. are Copy- -right (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. - -2.5 CID Font Code Public License - -CID FONT CODE PUBLIC LICENSE (Version 1.0 (3/31/99))("License") - -Subject to any applicable third party claims, Silicon Graphics, Inc. ("SGI") -hereby grants permission to Recipient (defined below), under SGI's copyrights -in the Original Software (defined below), to use, copy, modify, merge, pub- -lish, distribute, sublicense and/or sell copies of Subject Software (defined -below) in both source code and executable form, and to permit persons to whom -the Subject Software is furnished in accordance with this License to do the -same, subject to all of the following terms and conditions, which Recipient -accepts by engaging in any such use, copying, modifying, merging, publica- -tion, distributing, sublicensing or selling: - -1. Definitions. - - a. "Original Software" means source code of computer software code - that is described in Exhibit A as Original Software. - - b. "Modifications" means any addition to or deletion from the sub- - stance or structure of either the Original Software or any previous - Modifications. When Subject Software is released as a series of - files, a Modification means (i) any addition to or deletion from - the contents of a file containing Original Software or previous - Modifications and (ii) any new file that contains any part of the - Original Code or previous Modifications. - - c. "Subject Software" means the Original Software or Modifications - or the combination of the Original Software and Modifications, or - portions of any of the foregoing. - - d. "Recipient" means an individual or a legal entity exercising - rights under the terms of this License. For legal entities, "Recip- - ient" includes any entity that controls, is controlled by, or is - under common control with Recipient. For purposes of this defini- - tion, "control" of an entity means (i) the power, direct or indi- - rect, to direct or manage such entity, or (ii) ownership of fifty - percent (50%) or more of the outstanding shares or beneficial own- - ership of such entity. - - e. "Required Notice" means the notice set forth in Exhibit A to - this License. - - f. "Accompanying Technology" means any software or other technology - that is not a Modification and that is distributed or made publicly - available by Recipient with the Subject Software. Separate soft- - ware files that do not contain any Original Software or any previ- - ous Modification shall not be deemed a Modification, even if such - software files are aggregated as part of a product, or in any - medium of storage, with any file that does contain Original Soft- - ware or any previous Modification. - -2. License Terms. All distribution of the Subject Software must be made sub- -ject to the terms of this License. A copy of this License and the Required -Notice must be included in any documentation for Subject Software where -Recipient's rights relating to Subject Software and/or any Accompanying Tech- -nology are described. Distributions of Subject Software in source code form -must also include the Required Notice in every file distributed. In addition, -a ReadMe file entitled "Important Legal Notice" must be distributed with each -distribution of one or more files that incorporate Subject Software. That -file must be included with distributions made in both source code and exe- -cutable form. A copy of the License and the Required Notice must be included -in that file. Recipient may distribute Accompanying Technology under a -license of Recipient's choice, which may contain terms different from this -License, provided that (i) Recipient is in compliance with the terms of this -License, (ii) such other license terms do not modify or supersede the terms -of this License as applicable to the Subject Software, (iii) Recipient hereby -indemnifies SGI for any liability incurred by SGI as a result of the distri- -bution of Accompanying Technology or the use of other license terms. - -3. Termination. This License and the rights granted hereunder will terminate -automatically if Recipient fails to comply with terms herein and fails to -cure such breach within 30 days of the breach. Any sublicense to the Subject -Software that is properly granted shall survive any termination of this -License absent termination by the terms of such sublicense. Provisions which, -by their nature, must remain in effect beyond the termination of this License -shall survive. - -4. Trademark Rights. This License does not grant any rights to use any trade -name, trademark or service mark whatsoever. No trade name, trademark or ser- -vice mark of SGI may be used to endorse or promote products derived from or -incorporating any Subject Software without prior written permission of SGI. - -5. No Other Rights. No rights or licenses not expressly granted hereunder -shall arise by implication, estoppel or otherwise. Title to and ownership of -the Original Software at all times remains with SGI. All rights in the Origi- -nal Software not expressly granted under this License are reserved. - -6. Compliance with Laws; Non-Infringement. Recipient shall comply with all -applicable laws and regulations in connection with use and distribution of -the Subject Software, including but not limited to, all export and import -control laws and regulations of the U.S. government and other countries. -Recipient may not distribute Subject Software that (i) in any way infringes -(directly or contributorily) the rights (including patent, copyright, trade -secret, trademark or other intellectual property rights of any kind) of any -other person or entity, or (ii) breaches any representation or warranty, -express, implied or statutory, which under any applicable law it might be -deemed to have been distributed. - -7. Claims of Infringement. If Recipient at any time has knowledge of any one -or more third party claims that reproduction, modification, use, distribu- -tion, import or sale of Subject Software (including particular functionality -or code incorporated in Subject Software) infringes the third party's intel- -lectual property rights, Recipient must place in a well-identified web page -bearing the title "LEGAL" a description of each such claim and a description -of the party making each such claim in sufficient detail that a user of the -Subject Software will know whom to contact regarding the claim. Also, upon -gaining such knowledge of any such claim, Recipient must conspicuously -include the URL for such web page in the Required Notice, and in the text of -any related documentation, license agreement or collateral in which Recipient -describes end user's rights relating to the Subject Software. If Recipient -obtains such knowledge after it makes Subject Software available to any other -person or entity, Recipient shall take other steps (such as notifying appro- -priate mailing lists or newsgroups) reasonably calculated to provide such -knowledge to those who received the Subject Software. - -8. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, -WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT -LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, MER- -CHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. SGI ASSUMES NO -RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE -PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY SER- -VICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN -ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED -HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, -WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), -CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SUBJECT SOFTWARE OR -THE USE OR OTHER DEALINGS IN THE SUBJECT SOFTWARE. SOME JURISDICTIONS DO NOT -ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO THIS EXCLUSION AND -LIMITATION MAY NOT APPLY TO RECIPIENT TO THE EXTENT SO DISALLOWED. - -10. Indemnity. Recipient shall be solely responsible for damages arising, -directly or indirectly, out of its utilization of rights under this License. -Recipient will defend, indemnify and hold SGI and its successors and assigns -harmless from and against any loss, liability, damages, costs or expenses -(including the payment of reasonable attorneys fees) arising out of (Recipi- -ent's use, modification, reproduction and distribution of the Subject Soft- -ware or out of any representation or warranty made by Recipient. - -11. U.S. Government End Users. The Subject Software is a "commercial item" -consisting of "commercial computer software" as such terms are defined in -title 48 of the Code of Federal Regulations and all U.S. Government End Users -acquire only the rights set forth in this License and are subject to the -terms of this License. - -12. Miscellaneous. This License represents the complete agreement concerning -subject matter hereof. If any provision of this License is held to be unen- -forceable by any judicial or administrative authority having proper jurisdic- -tion with respect thereto, such provision shall be reformed so as to achieve -as nearly as possible the same economic effect as the original provision and -the remainder of this License will remain in effect. This License shall be -governed by and construed in accordance with the laws of the United States -and the State of California as applied to agreements entered into and to be -performed entirely within California between California residents. Any liti- -gation relating to this License shall be subject to the exclusive jurisdic- -tion of the Federal Courts of the Northern District of California (or, absent -subject matter jurisdiction in such courts, the courts of the State of Cali- -fornia), with venue lying exclusively in Santa Clara County, California, with -the losing party responsible for costs, including without limitation, court -costs and reasonable attorneys fees and expenses. The application of the -United Nations Convention on Contracts for the International Sale of Goods is -expressly excluded. Any law or regulation that provides that the language of -a contract shall be construed against the drafter shall not apply to this -License. - -Exhibit A - -Copyright (c) 1994-1999 Silicon Graphics, Inc. - -The contents of this file are subject to the CID Font Code Public License -Version 1.0 (the "License"). You may not use this file except in compliance -with the License. You may obtain a copy of the License at Silicon Graphics, -Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043 -or at http://www.sgi.com/software/opensource/cid/license.html - -Software distributed under the License is distributed on an "AS IS" basis. -ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED -WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON- -INFRINGEMENT. See the License for the specific language governing rights and -limitations under the License. - -The Original Software (as defined in the License) is CID font code that was -developed by Silicon Graphics, Inc. Those portions of the Subject Software -(as defined in the License) that were created by Silicon Graphics, Inc. are -Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - -[NOTE: When using this text in connection with Subject Software delivered -solely in object code form, Recipient may replace the words "this file" with -"this software" in both the first and second sentences.] - -Additional copyright(s)/license(s): - -******************************************************************************** - -SGI FREE SOFTWARE LICENSE B (Version 1.1 [02/22/2000]) - -1. Definitions. - -1.1. "Additional Notice Provisions" means such additional provisions as -appear in the Notice in Original Code under the heading "Additional Notice -Provisions." -1.2. "Covered Code" means the Original Code or Modifications, or any -combination thereof. -1.3. "Hardware" means any physical device that accepts input, processes -input, stores the results of processing, and/or provides output. -1.4. "Larger Work" means a work that combines Covered Code or portions -thereof with code not governed by the terms of this License. -1.5. "Licensable" means having the right to grant, to the maximum extent -possible, whether at the time of the initial grant or subsequently -acquired, any and all of the rights conveyed herein. -1.6. "License" means this document. -1.7. "Licensed Patents" means patent claims Licensable by SGI that are -infringed by the use or sale of Original Code or any Modifications provided -by SGI, or any combination thereof. -1.8. "Modifications" means any addition to or deletion from the substance -or structure of the Original Code or any previous Modifications. When -Covered Code is released as a series of files, a Modification is: - A. Any addition to the contents of a file containing Original Code and/or - addition to or deletion from the contents of a file containing previous - Modifications. - B. Any new file that contains any part of the Original Code or previous - Modifications. -1.9. "Notice" means any notice in Original Code or Covered Code, as -required by and in compliance with this License. -1.10. "Original Code" means source code of computer software code that is -described in the source code Notice required by Exhibit A as Original Code, -and updates and error corrections specifically thereto. -1.11. "Recipient" means an individual or a legal entity exercising rights -under, and complying with all of the terms of, this License or a future -version of this License issued under Section 8. For legal entities, -"Recipient" includes any entity that controls, is controlled by, or is -under common control with Recipient. For purposes of this definition, -"control" of an entity means (a) the power, direct or indirect, to direct -or manage such entity, or (b) ownership of fifty percent (50%) or more of -the outstanding shares or beneficial ownership of such entity. -1.12. "Recipient Patents" means patent claims Licensable by a Recipient -that are infringed by the use or sale of Original Code or any Modifications -provided by SGI, or any combination thereof. -1.13. "SGI" means Silicon Graphics, Inc. -1.14. "SGI Patents" means patent claims Licensable by SGI other than the -Licensed Patents. - -2. License Grant and Restrictions. - -2.1. SGI License Grant. Subject to the terms of this License and any third -party intellectual property claims, for the duration of intellectual -property protections inherent in the Original Code, SGI hereby grants -Recipient a worldwide, royalty­free, non­exclusive license, to do the -following: (i) under copyrights Licensable by SGI, to reproduce, -distribute, create derivative works from, and, to the extent applicable, -display and perform the Original Code and/or any Modifications provided by -SGI alone and/or as part of a Larger Work; and (ii) under any Licensable -Patents, to make, have made, use, sell, offer for sale, import and/or -otherwise transfer the Original Code and/or any Modifications provided by -SGI. Recipient accepts the terms and conditions of this License by -undertaking any of the aforementioned actions. The patent license shall -apply to the Covered Code if, at the time any related Modification is -added, such addition of the Modification causes such combination to be -covered by the Licensed Patents. The patent license in Section 2.1(ii) -shall not apply to any other combinations that include the Modification. -No patent license is provided under SGI Patents for infringements of SGI -Patents by Modifications not provided by SGI or combinations of Original -Code and Modifications not provided by SGI. - -2.2. Recipient License Grant. Subject to the terms of this License and any -third party intellectual property claims, Recipient hereby grants SGI and -any other Recipients a worldwide, royalty­free, non­exclusive license, -under any Recipient Patents, to make, have made, use, sell, offer for sale, -import and/or otherwise transfer the Original Code and/or any Modifications -provided by SGI. - -2.3. No License For Hardware Implementations. The licenses granted in -Section 2.1 and 2.2 are not applicable to implementation in Hardware of the -algorithms embodied in the Original Code or any Modifications provided by -SGI . - -3. Redistributions. - -3.1. Retention of Notice/Copy of License. The Notice set forth in Exhibit -A, below, must be conspicuously retained or included in any and all -redistributions of Covered Code. For distributions of the Covered Code in -source code form, the Notice must appear in every file that can include a -text comments field; in executable form, the Notice and a copy of this -License must appear in related documentation or collateral where the -Recipient's rights relating to Covered Code are described. Any Additional -Notice Provisions which actually appears in the Original Code must also be -retained or included in any and all redistributions of Covered Code. - -3.2. Alternative License. Provided that Recipient is in compliance with the -terms of this License, Recipient may, so long as without derogation of any -of SGI's rights in and to the Original Code, distribute the source code -and/or executable version(s) of Covered Code under (1) this License; (2) a -license identical to this License but for only such changes as are -necessary in order to clarify Recipient's role as licensor of -Modifications; and/or (3) a license of Recipient's choosing, containing -terms different from this License, provided that the license terms include -this Section 3 and Sections 4, 6, 7, 10, 12, and 13, which terms may not be -modified or superseded by any other terms of such license. If Recipient -elects to use any license other than this License, Recipient must make it -absolutely clear that any of its terms which differ from this License are -offered by Recipient alone, and not by SGI. It is emphasized that this -License is a limited license, and, regardless of the license form employed -by Recipient in accordance with this Section 3.2, Recipient may relicense -only such rights, in Original Code and Modifications by SGI, as it has -actually been granted by SGI in this License. - -3.3. Indemnity. Recipient hereby agrees to indemnify SGI for any liability -incurred by SGI as a result of any such alternative license terms Recipient -offers. - -4. Termination. This License and the rights granted hereunder will -terminate automatically if Recipient breaches any term herein and fails to -cure such breach within 30 days thereof. Any sublicense to the Covered Code -that is properly granted shall survive any termination of this License, -absent termination by the terms of such sublicense. Provisions that, by -their nature, must remain in effect beyond the termination of this License, -shall survive. - -5. No Trademark Or Other Rights. This License does not grant any rights to: -(i) any software apart from the Covered Code, nor shall any other rights or -licenses not expressly granted hereunder arise by implication, estoppel or -otherwise with respect to the Covered Code; (ii) any trade name, trademark -or service mark whatsoever, including without limitation any related right -for purposes of endorsement or promotion of products derived from the -Covered Code, without prior written permission of SGI; or (iii) any title -to or ownership of the Original Code, which shall at all times remains with -SGI. All rights in the Original Code not expressly granted under this -License are reserved. - -6. Compliance with Laws; Non­Infringement. There are various worldwide -laws, regulations, and executive orders applicable to dispositions of -Covered Code, including without limitation export, re­export, and import -control laws, regulations, and executive orders, of the U.S. government and -other countries, and Recipient is reminded it is obliged to obey such laws, -regulations, and executive orders. Recipient may not distribute Covered -Code that (i) in any way infringes (directly or contributorily) any -intellectual property rights of any kind of any other person or entity or -(ii) breaches any representation or warranty, express, implied or -statutory, to which, under any applicable law, it might be deemed to have -been subject. - -7. Claims of Infringement. If Recipient learns of any third party claim -that any disposition of Covered Code and/or functionality wholly or -partially infringes the third party's intellectual property rights, -Recipient will promptly notify SGI of such claim. - -8. Versions of the License. SGI may publish revised and/or new versions of -the License from time to time, each with a distinguishing version number. -Once Covered Code has been published under a particular version of the -License, Recipient may, for the duration of the license, continue to use it -under the terms of that version, or choose to use such Covered Code under -the terms of any subsequent version published by SGI. Subject to the -provisions of Sections 3 and 4 of this License, only SGI may modify the -terms applicable to Covered Code created under this License. - -9. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED "AS IS." ALL EXPRESS -AND IMPLIED WARRANTIES AND CONDITIONS ARE DISCLAIMED, INCLUDING, WITHOUT -LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, -SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND -NON­INFRINGEMENT. SGI ASSUMES NO RISK AS TO THE QUALITY AND PERFORMANCE OF -THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, SGI -ASSUMES NO COST OR LIABILITY FOR SERVICING, REPAIR OR CORRECTION. THIS -DISCLAIMER OF WARRANTY IS AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY -COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT SUBJECT TO THIS DISCLAIMER. - -10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES NOR LEGAL THEORY, -WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT -LIABILITY), CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE -FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF -ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, -WORK STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND -ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN -INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY -SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM -SGI's NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. -SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL -OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO -RECIPIENT. - -11. Indemnity. Recipient shall be solely responsible for damages arising, -directly or indirectly, out of its utilization of rights under this -License. Recipient will defend, indemnify and hold harmless Silicon -Graphics, Inc. from and against any loss, liability, damages, costs or -expenses (including the payment of reasonable attorneys fees) arising out -of Recipient's use, modification, reproduction and distribution of the -Covered Code or out of any representation or warranty made by Recipient. - -12. U.S. Government End Users. The Covered Code is a "commercial item" -consisting of "commercial computer software" as such terms are defined in -title 48 of the Code of Federal Regulations and all U.S. Government End -Users acquire only the rights set forth in this License and are subject to -the terms of this License. - -13. Miscellaneous. This License represents the complete agreement -concerning the its subject matter. If any provision of this License is held -to be unenforceable, such provision shall be reformed so as to achieve as -nearly as possible the same legal and economic effect as the original -provision and the remainder of this License will remain in effect. This -License shall be governed by and construed in accordance with the laws of -the United States and the State of California as applied to agreements -entered into and to be performed entirely within California between -California residents. Any litigation relating to this License shall be -subject to the exclusive jurisdiction of the Federal Courts of the Northern -District of California (or, absent subject matter jurisdiction in such -courts, the courts of the State of California), with venue lying -exclusively in Santa Clara County, California, with the losing party -responsible for costs, including without limitation, court costs and -reasonable attorneys fees and expenses. The application of the United -Nations Convention on Contracts for the International Sale of Goods is -expressly excluded. Any law or regulation that provides that the language -of a contract shall be construed against the drafter shall not apply to -this License. - -Exhibit A License Applicability. - -Except to the extent portions of this file are made subject to an -alternative license as permitted in the SGI Free Software License B, -Version 1.1 (the "License"), the contents of this file are subject only to -the provisions of the License. You may not use this file except in -compliance with the License. You may obtain a copy of the License at -Silicon Graphics, Inc., attn: Legal Services, 1600 Amphitheatre Parkway, -Mountain View, CA 94043­1351, or at: http://oss.sgi.com/projects/FreeB Note -that, as provided in the License, the Software is distributed on an "AS IS" -basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, -INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF -MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, -AND NON­INFRINGEMENT. Original Code. The Original Code is: [name of -software, version number, and release date], developed by Silicon Graphics, -Inc. The Original Code is Copyright (c) [dates of first publication, as -appearing in the Notice in the Original Code] Silicon Graphics, Inc. -Copyright in any portions created by third parties is as indicated -elsewhere herein. All Rights Reserved. - -Additional Notice Provisions: - -[such additional provisions, if any, as appear in the Notice in the -Original Code under the heading "Additional Notice Provisions"] diff --git a/src/osdopenvg.cc b/src/osdopenvg.cc index f9902fa..cb0c855 100644 --- a/src/osdopenvg.cc +++ b/src/osdopenvg.cc @@ -35,8 +35,8 @@ static const char* TAG = "OsdOpenVG"; -#define EXTERNALPICTURE(name, fname, fileextension) extern uint8_t name ## _data[] asm("_binary_other_"#fname"_"#fileextension"_start"); \ - extern uint8_t name ## _data_end[] asm("_binary_other_"#fname"_"#fileextension"_end"); +#define EXTERNALPICTURE(name, fname, fileextension) extern uint8_t name ## _data[] asm("_binary_"#fname"_"#fileextension"_start"); \ + extern uint8_t name ## _data_end[] asm("_binary_"#fname"_"#fileextension"_end"); EXTERNAL_PICTS diff --git a/src/other/defposter.png b/src/other/defposter.png deleted file mode 100644 index 1bfe1bd..0000000 Binary files a/src/other/defposter.png and /dev/null differ diff --git a/src/other/dolbyoff.png b/src/other/dolbyoff.png deleted file mode 100644 index 907d2b3..0000000 Binary files a/src/other/dolbyoff.png and /dev/null differ diff --git a/src/other/dolbyon.png b/src/other/dolbyon.png deleted file mode 100644 index 2d4971f..0000000 Binary files a/src/other/dolbyon.png and /dev/null differ diff --git a/src/other/hd1080i.png b/src/other/hd1080i.png deleted file mode 100644 index 8b3b53f..0000000 Binary files a/src/other/hd1080i.png and /dev/null differ diff --git a/src/other/hd720p.png b/src/other/hd720p.png deleted file mode 100644 index 1ea5d3e..0000000 Binary files a/src/other/hd720p.png and /dev/null differ diff --git a/src/other/licence.txt b/src/other/licence.txt deleted file mode 100644 index 6a741db..0000000 --- a/src/other/licence.txt +++ /dev/null @@ -1,56 +0,0 @@ -All png's are extracted from the skinnoopacity plugin by Louis Braun, which is -also subject to GPL v2 like vomp. - -Other artwork: - -vdrhires.png and -vdr.jpg is lifted from VDR's home page which states: -"Free project statement This is a FREE and completely non-commercial project. -Any information posted on these pages is freely available to anybody. All -source code published here is protected by the GNU general public licence." - -Note: -VDR Logo (c) by Jan Grell -Licensed under Creative Commons Licence. - ------------------------------------------------------------------- - -wallpaper.jpg and the high resolution version is actually blue-bend.jpg -from the KDE wallpapers. -It was taken from the debian package kdebase-data - the copyright -file is below. - ------------------------------------------------------------------- - -This package was debianized by Christopher L Cheney on -Tue, 16 Apr 2002 22:00:00 -0500. - -It was downloaded via CVS from cvs.kde.org - -Upstream Authors: Stephan Kulow and many others... - -License: - -All programs are either under the GPL or LGPL. On Debian systems, -the complete text of the GPL and LGPL licenses can be found in the -/usr/share/common-licenses/GPL and /usr/share/common-licenses/LGPL files. - -When in doubt, check the individual file, they should all have license -headings and other identifying marks. - -Artistic --------- -kdcop, kdesu, klipper - -BSD ---- -drkonqi, kaddressbook, kicker, ksmserver, ksplash, kwin, legacyimport - -GPL ---- -kappfinder, kate, kcheckpass, kdeprint, kdm, kfind, khelpcenter, kmenuedit, -konqueror, konsole, kpager, kpersonalizer, kreadconfig, kstart, ksysguard, ktip - -LGPL ----- -kdebugdialog, kdesktop, khotkeys, kxkb, libkonq, nsplugins diff --git a/src/other/properties.png b/src/other/properties.png deleted file mode 100644 index 77b00a5..0000000 Binary files a/src/other/properties.png and /dev/null differ diff --git a/src/other/radio.png b/src/other/radio.png deleted file mode 100644 index df66c4e..0000000 Binary files a/src/other/radio.png and /dev/null differ diff --git a/src/other/recfolder.png b/src/other/recfolder.png deleted file mode 100644 index 3f8b4ce..0000000 Binary files a/src/other/recfolder.png and /dev/null differ diff --git a/src/other/recording.png b/src/other/recording.png deleted file mode 100644 index 3213d84..0000000 Binary files a/src/other/recording.png and /dev/null differ diff --git a/src/other/recordings.png b/src/other/recordings.png deleted file mode 100644 index d1f4902..0000000 Binary files a/src/other/recordings.png and /dev/null differ diff --git a/src/other/restart.png b/src/other/restart.png deleted file mode 100644 index 07b651b..0000000 Binary files a/src/other/restart.png and /dev/null differ diff --git a/src/other/sd576i.png b/src/other/sd576i.png deleted file mode 100644 index ddedc19..0000000 Binary files a/src/other/sd576i.png and /dev/null differ diff --git a/src/other/timers.png b/src/other/timers.png deleted file mode 100644 index e6860ba..0000000 Binary files a/src/other/timers.png and /dev/null differ diff --git a/src/other/tv.png b/src/other/tv.png deleted file mode 100644 index 32de8d4..0000000 Binary files a/src/other/tv.png and /dev/null differ diff --git a/src/other/txtoff.png b/src/other/txtoff.png deleted file mode 100644 index 0e37e99..0000000 Binary files a/src/other/txtoff.png and /dev/null differ diff --git a/src/other/txton.png b/src/other/txton.png deleted file mode 100644 index 4e692f8..0000000 Binary files a/src/other/txton.png and /dev/null differ diff --git a/src/other/vdr.jpg b/src/other/vdr.jpg deleted file mode 100644 index 37be1c9..0000000 Binary files a/src/other/vdr.jpg and /dev/null differ diff --git a/src/other/vdrhires.jpg b/src/other/vdrhires.jpg deleted file mode 100644 index 03145c3..0000000 Binary files a/src/other/vdrhires.jpg and /dev/null differ diff --git a/src/other/vdrhires.png b/src/other/vdrhires.png deleted file mode 100644 index 91fc814..0000000 Binary files a/src/other/vdrhires.png and /dev/null differ diff --git a/src/other/wallpaper720p.jpg b/src/other/wallpaper720p.jpg deleted file mode 100644 index 4f6eb56..0000000 Binary files a/src/other/wallpaper720p.jpg and /dev/null differ diff --git a/src/other/wallpaperNTSC.jpg b/src/other/wallpaperNTSC.jpg deleted file mode 100644 index 5df6cbe..0000000 Binary files a/src/other/wallpaperNTSC.jpg and /dev/null differ diff --git a/src/other/wallpaperPAL.jpg b/src/other/wallpaperPAL.jpg deleted file mode 100644 index ed56138..0000000 Binary files a/src/other/wallpaperPAL.jpg and /dev/null differ diff --git a/src/raspi-patches/fetch_libav.sh b/src/raspi-patches/fetch_libav.sh deleted file mode 100755 index 908c957..0000000 --- a/src/raspi-patches/fetch_libav.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/bash -echo "Fetch libav from git" -cd .. -cd .. -#git clone git://git.libav.org/libav.git -cd libav -git checkout 5467742232c312b7d61dca7ac57447f728d8d6c9 -git apply ../vompclient-raspi/raspi-patches/libav_transcode.patch -echo "git fetch done. Now configure!" -./configure --enable-gpl --disable-everything --enable-decoder=mpeg_mpeg4 --enable-decoder=mpeg4 --enable-decoder=mpeg2video --enable-decoder=mpeg_xvmc --enable-decoder=mp2 --enable-decoder=mp3 --enable-decoder=ac3 --enable-decoder=eac3 --enable-encoder=mpeg4 --enable-avconv --enable-dct --enable-mdct --enable-rdft --enable-fft --enable-armv6 --enable-armv5te --enable-armvfp --enable-yasm -echo "Type make for making your local copy of libav, will take a long time!" - diff --git a/src/raspi-patches/libav_transcode.patch b/src/raspi-patches/libav_transcode.patch deleted file mode 100644 index 7873934..0000000 --- a/src/raspi-patches/libav_transcode.patch +++ /dev/null @@ -1,1484 +0,0 @@ -From a1960a00ad4c6f67917f5f4bfcbf739634958dd6 Mon Sep 17 00:00:00 2001 -From: Marten Richter -Date: Sun, 19 Aug 2012 13:58:58 +0200 -Subject: [PATCH] Add transcoding Mpeg2 to Mpeg4 code initial revision - ---- - libavcodec/Makefile | 2 + - libavcodec/allcodecs.c | 1 + - libavcodec/avcodec.h | 5 + - libavcodec/mpeg12.c | 82 +++- - libavcodec/mpeg4video.h | 5 + - libavcodec/mpeg4videodec.c | 2 +- - libavcodec/mpeg4videoenc.c | 32 +- - libavcodec/mpegvideo.c | 16 +- - libavcodec/mpegvideo.h | 6 + - libavcodec/mpegvideo_enc.c | 8 +- - libavcodec/mpegvideo_transcode.c | 888 ++++++++++++++++++++++++++++++++++++++ - libavcodec/transcode.h | 69 +++ - libavcodec/transcode_internal.h | 34 ++ - libavutil/pixfmt.h | 2 + - 14 files changed, 1138 insertions(+), 14 deletions(-) - create mode 100644 libavcodec/mpegvideo_transcode.c - create mode 100644 libavcodec/transcode.h - create mode 100644 libavcodec/transcode_internal.h - -diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index 77126a6..46f1efc 100644 ---- a/libavcodec/Makefile -+++ b/libavcodec/Makefile -@@ -9,6 +9,7 @@ HEADERS = avcodec.h \ - vdpau.h \ - version.h \ - xvmc.h \ -+ transcode.h \ - - OBJS = allcodecs.o \ - audioconvert.o \ -@@ -264,6 +265,7 @@ OBJS-$(CONFIG_MPC7_DECODER) += mpc7.o mpc.o mpegaudiodec.o \ - OBJS-$(CONFIG_MPC8_DECODER) += mpc8.o mpc.o mpegaudiodec.o \ - mpegaudiodecheader.o mpegaudio.o \ - mpegaudiodata.o -+OBJS-$(CONFIG_MPEG_MPEG4_DECODER) += mpegvideo_transcode.o - OBJS-$(CONFIG_MPEG_XVMC_DECODER) += mpegvideo_xvmc.o - OBJS-$(CONFIG_MPEG1VIDEO_DECODER) += mpeg12.o mpeg12data.o \ - mpegvideo.o error_resilience.o -diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c -index cb08e33..00fc162 100644 ---- a/libavcodec/allcodecs.c -+++ b/libavcodec/allcodecs.c -@@ -146,6 +146,7 @@ void avcodec_register_all(void) - REGISTER_DECODER (MMVIDEO, mmvideo); - REGISTER_DECODER (MOTIONPIXELS, motionpixels); - REGISTER_DECODER (MPEG_XVMC, mpeg_xvmc); -+ REGISTER_DECODER (MPEG_MPEG4, mpeg_mpeg4); - REGISTER_ENCDEC (MPEG1VIDEO, mpeg1video); - REGISTER_ENCDEC (MPEG2VIDEO, mpeg2video); - REGISTER_ENCDEC (MPEG4, mpeg4); -diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h -index 2b70b96..0cbd733 100644 ---- a/libavcodec/avcodec.h -+++ b/libavcodec/avcodec.h -@@ -257,6 +257,7 @@ enum CodecID { - CODEC_ID_ZEROCODEC, - CODEC_ID_MSS1, - CODEC_ID_MSA1, -+ CODEC_ID_MPEG2VIDEO_MPEG4, - - /* various PCM "codecs" */ - CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs -@@ -696,6 +697,10 @@ typedef struct RcOverride{ - * Audio encoder supports receiving a different number of samples in each call. - */ - #define CODEC_CAP_VARIABLE_FRAME_SIZE 0x10000 -+/** -+ * Codec can export data for transcoding (AV). -+ */ -+#define CODEC_CAP_HWACCEL_TRANSCODE 0x20000 - - //The following defines may change, don't expect compatibility if you use them. - #define MB_TYPE_INTRA4x4 0x0001 -diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c -index c40649d..01133e5 100644 ---- a/libavcodec/mpeg12.c -+++ b/libavcodec/mpeg12.c -@@ -37,6 +37,7 @@ - #include "bytestream.h" - #include "vdpau_internal.h" - #include "xvmc_internal.h" -+#include "transcode_internal.h" - #include "thread.h" - - //#undef NDEBUG -@@ -1183,6 +1184,8 @@ static enum PixelFormat mpeg_get_pixelformat(AVCodecContext *avctx) - - if (avctx->xvmc_acceleration) - return avctx->get_format(avctx, pixfmt_xvmc_mpg2_420); -+ else if (avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) -+ return PIX_FMT_TRANSCODE; - else if (avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) { - if (avctx->codec_id == CODEC_ID_MPEG1VIDEO) - return PIX_FMT_VDPAU_MPEG1; -@@ -1289,7 +1292,8 @@ static int mpeg_decode_postinit(AVCodecContext *avctx) - // until then pix_fmt may be changed right after codec init - if (avctx->pix_fmt == PIX_FMT_XVMC_MPEG2_IDCT || - avctx->hwaccel || -- s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) -+ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU || -+ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) - if (avctx->idct_algo == FF_IDCT_AUTO) - avctx->idct_algo = FF_IDCT_SIMPLE; - -@@ -1305,8 +1309,14 @@ static int mpeg_decode_postinit(AVCodecContext *avctx) - quant_matrix_rebuild(s->chroma_intra_matrix, old_permutation, s->dsp.idct_permutation); - quant_matrix_rebuild(s->chroma_inter_matrix, old_permutation, s->dsp.idct_permutation); - -+ if (CONFIG_MPEG_MPEG4_DECODER && s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) { -+ if (ff_mpeg_transcode_decode_postinit(avctx)<0) -+ return -2; -+ } - s1->mpeg_enc_ctx_allocated = 1; - } -+ -+ - return 0; - } - -@@ -1916,7 +1926,8 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict) - - ff_MPV_frame_end(s); - -- if (s->pict_type == AV_PICTURE_TYPE_B || s->low_delay) { -+ if (s->pict_type == AV_PICTURE_TYPE_B || s->low_delay -+ || (s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE)) {//no reordering for transcoding - *pict = s->current_picture_ptr->f; - ff_print_debug_info(s, pict); - } else { -@@ -2034,7 +2045,8 @@ static int vcr2_init_sequence(AVCodecContext *avctx) - avctx->hwaccel = ff_find_hwaccel(avctx->codec->id, avctx->pix_fmt); - - if (avctx->pix_fmt == PIX_FMT_XVMC_MPEG2_IDCT || avctx->hwaccel || -- s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) -+ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU || -+ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) - if (avctx->idct_algo == FF_IDCT_AUTO) - avctx->idct_algo = FF_IDCT_SIMPLE; - -@@ -2262,7 +2274,8 @@ static int decode_chunks(AVCodecContext *avctx, - ff_vdpau_mpeg_picture_complete(s2, buf, buf_size, s->slice_count); - - if (slice_end(avctx, picture)) { -- if (s2->last_picture_ptr || s2->low_delay) //FIXME merge with the stuff in mpeg_decode_slice -+ if (s2->last_picture_ptr || s2->low_delay || -+ (avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) ) //FIXME merge with the stuff in mpeg_decode_slice - *data_size = sizeof(AVPicture); - } - } -@@ -2528,6 +2541,67 @@ AVCodec ff_mpeg2video_decoder = { - .profiles = NULL_IF_CONFIG_SMALL(mpeg2_video_profiles), - }; - -+#if CONFIG_MPEG_MPEG4_DECODER -+ -+static av_cold int mpeg_transcode_decode_init(AVCodecContext *avctx) -+{ -+ Mpeg1Context *s = avctx->priv_data; -+ MpegEncContext *s2; -+ -+ -+ if (avctx->active_thread_type & FF_THREAD_SLICE) -+ return -1; -+ if (!(avctx->slice_flags & SLICE_FLAG_CODED_ORDER)) -+ return -1; -+ mpeg_decode_init(avctx); -+ -+ avctx->pix_fmt = PIX_FMT_TRANSCODE; -+ -+ s->mpeg_enc_ctx.transcode_context = (void*) av_mallocz(sizeof(MpegEncContext)); -+ if (!s->mpeg_enc_ctx.transcode_context) { -+ return AVERROR(ENOMEM); -+ } -+ s2=(MpegEncContext*)s->mpeg_enc_ctx.transcode_context; -+ s2->current_picture_ptr =&s2->current_picture; -+ -+ -+ -+ s->mpeg_enc_ctx.transcode = 1; -+ -+ return 0; -+} -+ -+static int mpeg_transcode_decode_end(AVCodecContext *avctx) -+{ -+ MpegEncContext *s2; -+ Mpeg1Context *s = avctx->priv_data; -+ s2=(MpegEncContext*)s->mpeg_enc_ctx.transcode_context; -+ -+ if (s2->current_picture_ptr) -+ ff_free_picture(s2,&s2->current_picture); -+ if (s2) -+ av_free(s2); -+ -+ return mpeg_decode_end(avctx); -+} -+ -+ -+AVCodec ff_mpeg_mpeg4_decoder = { -+ .name = "mpegvideo_mpeg4", -+ .type = AVMEDIA_TYPE_VIDEO, -+ .id = CODEC_ID_MPEG2VIDEO_MPEG4, -+ .priv_data_size = sizeof(Mpeg1Context), -+ .init = mpeg_transcode_decode_init, -+ .close = mpeg_transcode_decode_end, -+ .decode = mpeg_decode_frame, -+ .capabilities = CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED| CODEC_CAP_HWACCEL_TRANSCODE | CODEC_CAP_DELAY, -+ .flush = flush, -+ .long_name = NULL_IF_CONFIG_SMALL("MPEG-1/2 video to MPEG-4 part 2 transcoder for hardware accelaration"), -+}; -+ -+#endif -+ -+ - #if CONFIG_MPEG_XVMC_DECODER - static av_cold int mpeg_mc_decode_init(AVCodecContext *avctx) - { -diff --git a/libavcodec/mpeg4video.h b/libavcodec/mpeg4video.h -index 64c0243..a8963df 100644 ---- a/libavcodec/mpeg4video.h -+++ b/libavcodec/mpeg4video.h -@@ -88,6 +88,7 @@ void ff_mpeg4_encode_mb(MpegEncContext *s, - void ff_mpeg4_pred_ac(MpegEncContext * s, DCTELEM *block, int n, - int dir); - void ff_set_mpeg4_time(MpegEncContext * s); -+void ff_set_frame_distances(MpegEncContext * s); - void ff_mpeg4_encode_picture_header(MpegEncContext *s, int picture_number); - - int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb); -@@ -102,6 +103,10 @@ int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s); - int ff_mpeg4_decode_video_packet_header(MpegEncContext *s); - void ff_mpeg4_init_direct_mv(MpegEncContext *s); - -+#if CONFIG_MPEG_MPEG4_DECODER -+void ff_mpeg4_transcode_init_tables(MpegEncContext* s); -+#endif -+ - /** - * - * @return the mb_type -diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c -index 3fcc6d0..d588f57 100644 ---- a/libavcodec/mpeg4videodec.c -+++ b/libavcodec/mpeg4videodec.c -@@ -863,7 +863,7 @@ static inline int mpeg4_decode_block(MpegEncContext * s, DCTELEM * block, - dc_pred_dir= (s->pred_dir_table[s->mb_x + s->mb_y*s->mb_stride]<=0); - - /* nothing to do if this MB was skipped in the next P Frame */ -- if (s->next_picture.f.mbskip_table[s->mb_y * s->mb_stride + s->mb_x]) { //FIXME avoid DCT & ... -+ if (!(CONFIG_MPEG_MPEG4_DECODER && s->transcode) && -+ s->next_picture.f.mbskip_table[s->mb_y * s->mb_stride + s->mb_x]) { //FIXME avoid DCT & ... - s->skip_count++; - s->mv[0][0][0]= - s->mv[0][0][1]= -@@ -614,10 +615,11 @@ void ff_mpeg4_encode_mb(MpegEncContext * s, - s->p_tex_bits+= get_bits_diff(s); - } - -- }else{ /* s->pict_type==AV_PICTURE_TYPE_B */ -+ }else{ /* s->pict_type==AV_PICTURE_TYPE_P */ - cbp= get_p_cbp(s, block, motion_x, motion_y); - -- if ((cbp | motion_x | motion_y | s->dquant) == 0 && s->mv_type==MV_TYPE_16X16) { -+ if ((cbp | motion_x | motion_y | s->dquant) == 0 && s->mv_type==MV_TYPE_16X16 -+ && !(CONFIG_MPEG_MPEG4_DECODER && s->transcode) ) { - /* check if the B frames can skip it too, as we must skip it if we skip here - why didn't they just compress the skip-mb bits instead of reusing them ?! */ - if(s->max_b_frames>0){ -@@ -860,6 +862,8 @@ static void mpeg4_encode_gop_header(MpegEncContext * s){ - time = s->current_picture_ptr->f.pts; - if(s->reordered_input_picture[1]) - time = FFMIN(time, s->reordered_input_picture[1]->f.pts); -+ if (CONFIG_MPEG_MPEG4_DECODER && s->transcode) -+ time = FFMIN(time, s->last_picture.f.pts); - time= time*s->avctx->time_base.num; - - seconds= time/s->avctx->time_base.den; -@@ -1263,6 +1267,28 @@ static av_cold int encode_init(AVCodecContext *avctx) - return 0; - } - -+#if CONFIG_MPEG_MPEG4_DECODER -+ -+void ff_mpeg4_transcode_init_tables(MpegEncContext* s) -+{ -+ init_uni_dc_tab(); -+ ff_init_rl(&ff_mpeg4_rl_intra, ff_mpeg4_static_rl_table_store[0]); -+ init_uni_mpeg4_rl_tab(&ff_mpeg4_rl_intra, uni_mpeg4_intra_rl_bits, uni_mpeg4_intra_rl_len); -+ init_uni_mpeg4_rl_tab(&ff_h263_rl_inter, uni_mpeg4_inter_rl_bits, uni_mpeg4_inter_rl_len); -+ s->min_qcoeff= -2048; -+ s->max_qcoeff= 2047; -+ s->inter_ac_vlc_length = uni_mpeg4_inter_rl_len; -+ s->inter_ac_vlc_last_length= uni_mpeg4_inter_rl_len + 128*64; -+ s->luma_dc_vlc_length= uni_DCtab_lum_len; -+ s->ac_esc_length= 7+2+1+6+1+12+1; -+ s->y_dc_scale_table= ff_mpeg4_y_dc_scale_table; -+ s->c_dc_scale_table= ff_mpeg4_c_dc_scale_table; -+ -+ -+} -+ -+#endif -+ - void ff_mpeg4_init_partitions(MpegEncContext *s) - { - uint8_t *start= put_bits_ptr(&s->pb); -diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c -index 574893e..8f25689 100644 ---- a/libavcodec/mpegvideo.c -+++ b/libavcodec/mpegvideo.c -@@ -38,6 +38,7 @@ - #include "msmpeg4.h" - #include "faandct.h" - #include "xvmc_internal.h" -+#include "transcode_internal.h" - #include "thread.h" - #include - -@@ -379,7 +380,7 @@ fail: // for the FF_ALLOCZ_OR_GOTO macro - /** - * Deallocate a picture. - */ --static void free_picture(MpegEncContext *s, Picture *pic) -+void ff_free_picture(MpegEncContext *s, Picture *pic) - { - int i; - -@@ -996,7 +997,7 @@ void ff_MPV_common_end(MpegEncContext *s) - - if (s->picture && !s->avctx->internal->is_copy) { - for (i = 0; i < s->picture_count; i++) { -- free_picture(s, &s->picture[i]); -+ ff_free_picture(s, &s->picture[i]); - } - } - av_freep(&s->picture); -@@ -1353,6 +1354,9 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) - - if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) - return ff_xvmc_field_start(s, avctx); -+ if (CONFIG_MPEG_MPEG4_DECODER && -+ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) -+ return ff_transcode_start_picture(s, avctx); - - return 0; - } -@@ -1366,6 +1370,9 @@ void ff_MPV_frame_end(MpegEncContext *s) - // just to make sure that all data is rendered. - if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) { - ff_xvmc_field_end(s); -+ } else if (CONFIG_MPEG_MPEG4_DECODER && -+ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE) { -+ ff_transcode_end_picture(s); - } else if ((s->error_count || s->encoding) && - !s->avctx->hwaccel && - !(s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) && -@@ -1941,6 +1948,11 @@ void MPV_decode_mb_internal(MpegEncContext *s, DCTELEM block[12][64], - ff_xvmc_decode_mb(s);//xvmc uses pblocks - return; - } -+ if ( CONFIG_MPEG_MPEG4_DECODER && -+ s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_TRANSCODE){ -+ ff_transcode_decode_mb(s); //transcode does no real decoding -+ return; -+ } - - if(s->avctx->debug&FF_DEBUG_DCT_COEFF) { - /* save DCT coefficients */ -diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h -index f5b20e6..8d37178 100644 ---- a/libavcodec/mpegvideo.h -+++ b/libavcodec/mpegvideo.h -@@ -702,6 +702,9 @@ typedef struct MpegEncContext { - - /* temp buffers for rate control */ - float *cplx_tab, *bits_tab; -+ /* transcode, encoding context: a pointer to another MpegEncContext*/ -+ void *transcode_context; -+ int transcode; // 0 no transcoding, 1 activated - } MpegEncContext; - - #define REBASE_PICTURE(pic, new_ctx, old_ctx) (pic ? \ -@@ -745,6 +748,7 @@ void ff_MPV_common_end(MpegEncContext *s); - void ff_MPV_decode_mb(MpegEncContext *s, DCTELEM block[12][64]); - int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx); - void ff_MPV_frame_end(MpegEncContext *s); -+void ff_MPV_encode_defaults(MpegEncContext *s); - int ff_MPV_encode_init(AVCodecContext *avctx); - int ff_MPV_encode_end(AVCodecContext *avctx); - int ff_MPV_encode_picture(AVCodecContext *avctx, AVPacket *pkt, -@@ -787,6 +791,8 @@ void ff_copy_picture(Picture *dst, Picture *src); - */ - int ff_alloc_picture(MpegEncContext *s, Picture *pic, int shared); - -+void ff_free_picture(MpegEncContext *s, Picture *pic); -+ - extern const enum PixelFormat ff_pixfmt_list_420[]; - extern const enum PixelFormat ff_hwaccel_pixfmt_list_420[]; - -diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c -index f88df92..a35c292 100644 ---- a/libavcodec/mpegvideo_enc.c -+++ b/libavcodec/mpegvideo_enc.c -@@ -256,7 +256,7 @@ static void update_duplicate_context_after_me(MpegEncContext *dst, - * Set the given MpegEncContext to defaults for encoding. - * the changed fields will not depend upon the prior state of the MpegEncContext. - */ --static void MPV_encode_defaults(MpegEncContext *s) -+void ff_MPV_encode_defaults(MpegEncContext *s) - { - int i; - ff_MPV_common_defaults(s); -@@ -275,7 +275,7 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx) - int i; - int chroma_h_shift, chroma_v_shift; - -- MPV_encode_defaults(s); -+ ff_MPV_encode_defaults(s); - - switch (avctx->codec_id) { - case CODEC_ID_MPEG2VIDEO: -@@ -3085,7 +3085,7 @@ static int estimate_qp(MpegEncContext *s, int dry_run){ - } - - /* must be called before writing the header */ --static void set_frame_distances(MpegEncContext * s){ -+void ff_set_frame_distances(MpegEncContext * s){ - assert(s->current_picture_ptr->f.pts != AV_NOPTS_VALUE); - s->time = s->current_picture_ptr->f.pts * s->avctx->time_base.num; - -@@ -3114,7 +3114,7 @@ static int encode_picture(MpegEncContext *s, int picture_number) - /* we need to initialize some time vars before we can encode b-frames */ - // RAL: Condition added for MPEG1VIDEO - if (s->codec_id == CODEC_ID_MPEG1VIDEO || s->codec_id == CODEC_ID_MPEG2VIDEO || (s->h263_pred && !s->msmpeg4_version)) -- set_frame_distances(s); -+ ff_set_frame_distances(s); - if(CONFIG_MPEG4_ENCODER && s->codec_id == CODEC_ID_MPEG4) - ff_set_mpeg4_time(s); - -diff --git a/libavcodec/mpegvideo_transcode.c b/libavcodec/mpegvideo_transcode.c -new file mode 100644 -index 0000000..e2e56e1 ---- /dev/null -+++ b/libavcodec/mpegvideo_transcode.c -@@ -0,0 +1,888 @@ -+/* -+ * Transcoder -+ * Copyright (c) 2012 Marten Richter -+ * -+ * For the code took from the encoder: -+ * Copyright (c) 2000,2001 Fabrice Bellard -+ * Copyright (c) 2002-2004 Michael Niedermayer -+ * 4MV & hq & B-frame encoding stuff by Michael Niedermayer -+ * and probably many others see the git commit notes for details -+ * -+ * This file is part of Libav. -+ * -+ * Libav is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * Libav is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with Libav; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#include "avcodec.h" -+#include "dsputil.h" -+#include "mpegvideo.h" -+#include "mpegvideo_common.h" -+#include "mpeg4video.h" -+ -+#include "mpeg12.h" -+#include "h263.h" -+ -+#undef NDEBUG -+#include -+ -+#include "transcode.h" -+#include "transcode_internal.h" -+ -+int transcode_qmul_table[32]; -+ -+/** -+ * initialise the encoding contexts, after the properties of the incoming stream are known -+ * TODO: remove unnecessary inits -+ */ -+int ff_mpeg_transcode_decode_postinit(AVCodecContext* avctx) -+{ -+ // Now init the encode context -+ Mpeg1Context *s2; -+ MpegEncContext *s; -+ int i; -+ int chroma_h_shift, chroma_v_shift; -+ int savetimebaseden; -+ -+ -+ s2 = avctx->priv_data; -+ s = s2->mpeg_enc_ctx.transcode_context; -+ -+ ff_MPV_encode_defaults(s); -+ s->codec_id=CODEC_ID_MPEG4; -+ -+ s->input_picture_number = 0; -+ s->transcode = 1; -+ avctx->qmin = 1; -+ -+ -+ s->bit_rate = avctx->bit_rate; -+ s->width = avctx->width+32; -+ s->height = avctx->height; -+ s->gop_size = avctx->gop_size; -+ s->avctx = avctx; -+ s->flags = avctx->flags; -+ s->flags2 = avctx->flags2; -+ s->max_b_frames = 100; // we have b frames -+ //s->codec_id = avctx->codec->id; -+ s->strict_std_compliance = avctx->strict_std_compliance; -+ s->quarter_sample = 0; -+ s->mpeg_quant = 0; -+ s->rtp_mode = 0; //we need it for qscale -+ s->vol_sprite_usage=0; -+ s->intra_dc_precision = avctx->intra_dc_precision; -+ s->user_specified_pts = AV_NOPTS_VALUE; -+ -+ if (s->gop_size <= 1) { -+ s->intra_only = 1; -+ s->gop_size = 12; -+ } else { -+ s->intra_only = 0; -+ } -+ -+ s->me_method = avctx->me_method; -+ s->adaptive_quant = (s->avctx->lumi_masking || -+ s->avctx->dark_masking || -+ s->avctx->temporal_cplx_masking || -+ s->avctx->spatial_cplx_masking || -+ s->avctx->p_masking || -+ s->avctx->border_masking || -+ (s->mpv_flags & FF_MPV_FLAG_QP_RD)) && -+ !s->fixed_qscale; -+ s->loop_filter = 0; //no loop for mpeg4 -+ -+ if (s->mpeg_quant || s->codec_id == CODEC_ID_MPEG1VIDEO || -+ s->codec_id == CODEC_ID_MPEG2VIDEO || s->codec_id == CODEC_ID_MJPEG) { -+ // (a + x * 3 / 8) / x -+ s->intra_quant_bias = 3 << (QUANT_BIAS_SHIFT - 3); -+ s->inter_quant_bias = 0; -+ } else { -+ s->intra_quant_bias = 0; -+ // (a - x / 4) / x -+ s->inter_quant_bias = -(1 << (QUANT_BIAS_SHIFT - 2)); -+ } -+ -+ avcodec_get_chroma_sub_sample(PIX_FMT_YUV422P, &chroma_h_shift, -+ &chroma_v_shift); -+ if (/*avctx->codec_id == CODEC_ID_MPEG4 &&*/ -+ s->avctx->time_base.den > (1 << 16) - 1) -+ { -+ av_log(avctx, AV_LOG_ERROR, -+ "timebase %d/%d not supported by MPEG 4 standard, " -+ "the maximum admitted value for the timebase denominator " -+ "is %d\n", s->avctx->time_base.num, s->avctx->time_base.den, -+ (1 << 16) - 1); -+ return -1; -+ } -+ s->time_increment_bits = av_log2(s->avctx->time_base.den - 1) + 1; -+ -+ // mpeg4 paramter -+ s->out_format = FMT_H263; -+ s->h263_pred = 1; -+ s->unrestricted_mv = 1; //does not really matter -+ s->low_delay = s->max_b_frames ? 0 : 1; -+ avctx->delay = s->low_delay ? 0 : (s->max_b_frames + 1); -+ avctx->has_b_frames = !s->low_delay; -+ -+ s->encoding = 1; -+ s->progressive_frame = -+ s->progressive_sequence = !(avctx->flags & (CODEC_FLAG_INTERLACED_DCT | -+ CODEC_FLAG_INTERLACED_ME) || -+ s->alternate_scan); -+ /* init */ -+ if (ff_MPV_common_init(s) < 0) -+ return -1; -+ -+ if (!s->dct_quantize) -+ s->dct_quantize = ff_dct_quantize_c; -+ /* if (!s->denoise_dct) -+ s->denoise_dct = denoise_dct_c; -+ s->fast_dct_quantize = s->dct_quantize; -+ if (avctx->trellis) -+ s->dct_quantize = dct_quantize_trellis_c;*/ -+ -+ -+ s->quant_precision = 5; -+ -+ ff_set_cmp(&s->dsp, s->dsp.ildct_cmp, s->avctx->ildct_cmp); -+ ff_set_cmp(&s->dsp, s->dsp.frame_skip_cmp, s->avctx->frame_skip_cmp); -+ -+ if (CONFIG_H263_ENCODER && s->out_format == FMT_H263) -+ ff_h263_encode_init(s); -+ -+ /* init q matrix */ -+ for (i = 0; i < 64; i++) { -+ int j = s->dsp.idct_permutation[i]; -+ int j2 = s2->mpeg_enc_ctx.dsp.idct_permutation[i]; -+ if (/*CONFIG_MPEG4_ENCODER && s->codec_id == CODEC_ID_MPEG4 && */ -+ s->mpeg_quant) { -+ s->intra_matrix[j] = s2->mpeg_enc_ctx.intra_matrix[j2]; -+ s->inter_matrix[j] = s2->mpeg_enc_ctx.inter_matrix[j2]; -+ } else if (s->out_format == FMT_H263 || s->out_format == FMT_H261) { -+ s->intra_matrix[j] = -+ s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; -+ } else { -+ /* mpeg1/2 */ -+ s->intra_matrix[j] = ff_mpeg1_default_intra_matrix[i]; -+ s->inter_matrix[j] = ff_mpeg1_default_non_intra_matrix[i]; -+ } -+ -+ } -+ ff_convert_matrix(&s->dsp, s->q_intra_matrix, s->q_intra_matrix16, -+ s->intra_matrix, s->intra_quant_bias, avctx->qmin, -+ 31, 1); -+ ff_convert_matrix(&s->dsp, s->q_inter_matrix, s->q_inter_matrix16, -+ s->inter_matrix, s->inter_quant_bias, avctx->qmin, -+ 31, 0); -+ -+ ff_mpeg4_transcode_init_tables(s); -+ for (i=1;i<32;i++) { -+ transcode_qmul_table[i]=(1<current_picture, 1); -+ -+} -+ -+int ff_transcode_start_picture(MpegEncContext *dec, AVCodecContext *avctx) -+{ -+ Mpeg1Context *s2; -+ MpegEncContext *s; -+ int i; -+ struct transcode_pix_fmt *render = (struct transcode_pix_fmt*)dec->current_picture.f.data[0]; -+ s2 = dec->avctx->priv_data; -+ s = s2->mpeg_enc_ctx.transcode_context; -+ -+ assert(avctx); -+ if (dec->picture_structure != PICT_FRAME) -+ { -+ av_log(avctx, AV_LOG_ERROR, "field mode is not supported %d\n",dec->picture_structure); -+ } -+ -+ if (!render || render->transcode_id != AV_TRANSCODE_ID || -+ !render->packet.data || !render->packet.size ) { -+ av_log(avctx, AV_LOG_ERROR, -+ "Render token doesn't look as expected.\n"); -+ return -1; // make sure that this is a transcode packet -+ } -+ -+ -+ s->input_picture_number=s->input_picture_number+1; -+ -+ for(i=0; i<3; i++){ -+ /* init last dc values */ -+ /* note: quant matrix value (8) is implied here */ -+ s->last_dc[i] = 128 << s->intra_dc_precision; -+ -+ s->current_picture.f.error[i] = 0; -+ } -+ s->mb_skip_run = 0; -+ memset(s->last_mv, 0, sizeof(s->last_mv)); -+ -+ s->last_mv_dir = 0; -+ -+ -+ -+ //now init the put bit contexts -+ -+ s->slice_context_count=1; -+ init_put_bits(&s->pb, render->packet.data, render->packet.size); -+ -+ //ff_mpeg4_transcode_write_picture_headers(dec,avctx); //moved to slice decoding -+ return 0; -+} -+ -+ -+ -+ -+void ff_transcode_end_picture(MpegEncContext *dec) -+{ -+ Mpeg1Context *s2; -+ MpegEncContext *s; -+ struct transcode_pix_fmt *render; -+ s2 = dec->avctx->priv_data; -+ s = s2->mpeg_enc_ctx.transcode_context; -+ ff_mpeg4_stuffing(&s->pb); -+ avpriv_align_put_bits(&s->pb); -+ flush_put_bits(&s->pb); -+ -+ render = (struct transcode_pix_fmt*)dec->current_picture.f.data[0]; -+ render->packet.size=put_bits_count(&s->pb)/8; -+ -+ -+ -+} -+ -+//copy from mpegvideo_enc.c fix me -+ -+static inline void clip_coeffs(MpegEncContext *s, DCTELEM *block, -+ int last_index) -+{ -+ int i; -+ const int maxlevel = s->max_qcoeff; -+ const int minlevel = s->min_qcoeff; -+ int overflow = 0; -+ -+ if (s->mb_intra) { -+ i = 1; // skip clipping of intra dc -+ } else -+ i = 0; -+ -+ for (; i <= last_index; i++) { -+ const int j = s->intra_scantable.scantable[i]; -+ int level = block[j]; -+ -+ if (level > maxlevel) { -+ level = maxlevel; -+ overflow++; -+ } else if (level < minlevel) { -+ level = minlevel; -+ overflow++; -+ } -+ -+ block[j] = level; -+ } -+ -+ if (overflow && s->avctx->mb_decision == FF_MB_DECISION_SIMPLE) -+ av_log(s->avctx, AV_LOG_INFO, -+ "warning, clipping %d dct coefficients to %d..%d\n", -+ overflow, minlevel, maxlevel); -+} -+ -+ -+static inline int quantize_emulated_intra_c(MpegEncContext *s, -+ DCTELEM *block, int n, -+ int qscale,int dec_last_index, -+ int *overflow) -+{ -+ int i, j, level, last_non_zero, q, start_i; -+ const uint8_t *scantable= s->intra_scantable.scantable; -+ int bias; -+ int qmul; -+ int max=0; -+ unsigned int threshold1, threshold2; -+ -+ -+ //qmul=(1<=0) -+ block[0] = (block[0] + (q >> 1)) / q; -+ else -+ block[0] =-( (-block[0] + (q >> 1)) / q); -+ -+ level=block[0]; -+ if (level>=0) { -+ level=((level<<1)+1)*qscale-1+(qscale&1)+1024; -+ } else { -+ level=-((((-level)<<1)+1)*qscale-1+(qscale&1))+1024; -+ } -+ -+ max=block[0]; -+ start_i = 1; -+ -+ if (block[0]) last_non_zero = 0; -+ else last_non_zero=-1; -+ bias= s->inter_quant_bias<<(QMAT_SHIFT - QUANT_BIAS_SHIFT); -+ -+ threshold1= (1<=start_i;i--) { -+ j = scantable[i]; -+ level = block[j] * qmul; -+ if(((unsigned)(level+threshold1))>threshold2){ -+ last_non_zero = i; -+ break; -+ }else{ -+ block[j]=0; -+ } -+ } -+ -+ for(i=start_i; i<=last_non_zero; i++) { -+ j = scantable[i]; -+ level = block[j] * qmul; -+ if(((unsigned)(level+threshold1))>threshold2){ -+ if(level>0){ -+ level= (bias + level)>>(QMAT_SHIFT); -+ block[j]= level; -+ }else{ -+ level= (bias - level)>>(QMAT_SHIFT); -+ block[j]= -level; -+ } -+ max |=level; -+ }else{ -+ block[j]=0; -+ } -+ } -+ *overflow= s->max_qcoeff < max; //overflow might have happened -+ -+ -+ return last_non_zero; -+} -+ -+ -+ -+static inline int quantize_c(MpegEncContext *s, -+ DCTELEM *block, int n, -+ int qscale,int dec_last_index, -+ int *overflow) -+{ -+ int i, j, level, last_non_zero, q, start_i; -+ const uint8_t *scantable= s->intra_scantable.scantable; -+ int bias; -+ int qmul; -+ int max=0; -+ unsigned int threshold1, threshold2; -+ -+ -+ //qmul=(1<mb_intra) { -+ if (!s->h263_aic) { -+ if (n < 4) -+ q = s->y_dc_scale; -+ else -+ q = s->c_dc_scale; -+ // q = q << 3; -+ } else -+ /* For AIC we skip quant/dequant of INTRADC */ -+ q = 1;// << 3; -+ -+ /* note: block[0] is assumed to be positive */ -+ block[0] = (block[0] + (q >> 1)) / q; -+ start_i = 1; -+ last_non_zero = 0; -+ bias= s->intra_quant_bias<<(QMAT_SHIFT - QUANT_BIAS_SHIFT); -+ } else { -+ start_i = 0; -+ last_non_zero = -1; -+ bias= s->inter_quant_bias<<(QMAT_SHIFT - QUANT_BIAS_SHIFT); -+ } -+ threshold1= (1<=start_i;i--) { -+ j = scantable[i]; -+ level = block[j] * qmul; -+ if(((unsigned)(level+threshold1))>threshold2){ -+ last_non_zero = i; -+ break; -+ }else{ -+ block[j]=0; -+ } -+ } -+ -+ for(i=start_i; i<=last_non_zero; i++) { -+ j = scantable[i]; -+ level = block[j] * qmul; -+ -+ // if( bias+level >= (1<= (1<threshold2){ -+ if(level>0){ -+ level= (bias + level)>>(QMAT_SHIFT); -+ block[j]= level; -+ }else{ -+ level= (bias - level)>>(QMAT_SHIFT); -+ block[j]= -level; -+ } -+ max |=level; -+ }else{ -+ block[j]=0; -+ } -+ } -+ *overflow= s->max_qcoeff < max; //overflow might have happened -+ -+ -+ -+ return last_non_zero; -+} -+ -+#define ZEROS8 0,0,0,0,0,0,0,0 -+#define ZEROS64 ZEROS8,ZEROS8,ZEROS8,ZEROS8,ZEROS8,ZEROS8,ZEROS8,ZEROS8 -+ -+ -+ -+static inline void add_zero_mb(MpegEncContext *s) -+{ -+ DCTELEM zero_block[6][64]={{ZEROS64},{ZEROS64},{ZEROS64},{ZEROS64},{ZEROS64},{ZEROS64}}; -+ const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; -+ -+ s->dquant=0; -+ ff_update_block_index(s); -+ -+ if (s->pict_type==AV_PICTURE_TYPE_I) { -+ int q; -+ s->mb_intra=1; -+ if (s->qscale>4){ // this is not good for quantization -+ s->dquant=-2; -+ s->qscale=s->qscale-2; -+ ff_set_qscale(s, s->qscale); -+ } -+ q=s->y_dc_scale; -+ zero_block[0][0]=zero_block[1][0]= -+ zero_block[2][0]=zero_block[3][0]=(1024+(q>>1))/q; -+ q=s->c_dc_scale; -+ zero_block[4][0]=zero_block[5][0]=(1024+(q>>1))/q; -+ s->block_last_index[0]=s->block_last_index[1]= -+ s->block_last_index[2]=s->block_last_index[3]= -+ s->block_last_index[4]=s->block_last_index[5]=0; -+ -+ if ( (s->h263_pred || s->h263_aic)) -+ s->mbintra_table[mb_xy]=1; -+ } else { -+ s->mb_intra=0; -+ s->mv_type=MV_TYPE_16X16; -+ s->mv_dir=MV_DIR_FORWARD; -+ s->mv[0][0][0]=0; -+ s->mv[0][0][1]=0; -+ if ((s->h263_pred || s->h263_aic)) { -+ -+ if(s->mbintra_table[mb_xy]) -+ ff_clean_intra_table_entries(s); -+ } else { -+ s->last_dc[0] = -+ s->last_dc[1] = -+ s->last_dc[2] = 128 << s->intra_dc_precision; -+ } -+ s->block_last_index[0]=s->block_last_index[1]= -+ s->block_last_index[2]=s->block_last_index[3]= -+ s->block_last_index[4]=s->block_last_index[5]=-1; -+ -+ } -+ -+ -+ -+ ff_mpeg4_encode_mb(s, zero_block, 0, 0); -+ ff_h263_update_motion_val(s); -+} -+ -+void ff_transcode_decode_mb(MpegEncContext *dec) -+{ -+ Mpeg1Context *s2; -+ MpegEncContext *s; -+ int dquant; -+ int i; -+ int dir; -+ -+ int motion_x; -+ int motion_y; -+ int savetimebaseden; -+ int mb_xy; -+ int emulate=0; -+ s2 = dec->avctx->priv_data; -+ s = s2->mpeg_enc_ctx.transcode_context; -+ -+ s->mb_y = dec->mb_y; -+ -+ s->mb_x = dec->mb_x+1; -+ -+ savetimebaseden=s->avctx->time_base.den;//the way how mpeg2 and mpeg4 handle interlaced video differs -+ if (!s->progressive_sequence) { -+ s->avctx->time_base.den=s->avctx->time_base.den>>1; -+ } -+ -+ -+ -+ if (dec->mb_x==0 && dec->mb_y==0) { // a bit ugly but qscale is not set before -+ s->time_increment_bits = av_log2(s->avctx->time_base.den - 1) + 1; -+ ff_mpeg4_transcode_write_picture_headers(dec,dec->avctx); -+ -+ } -+ -+ -+ -+ -+ -+ if (s->mb_x==1) { -+ s->first_slice_line=s->mb_y==0; -+ -+ s->mb_x = 0; -+ ff_init_block_index(s); //necessary for prediction -+ -+ add_zero_mb(s); -+ s->mb_x = 1; -+ } -+ mb_xy= s->mb_y * s->mb_stride + s->mb_x; -+ -+ -+ -+ // the decoder must be updated, important we assume mpeg12 as input -+ if (!dec->mb_intra) { -+ dec->last_dc[0] = -+ dec->last_dc[1] = -+ dec->last_dc[2] = 128 << dec->intra_dc_precision; -+ } -+ -+ -+ dquant=-s->qscale+(dec->qscale>>1 | 1); -+ if (dquant>2) dquant=2; -+ else if (dquant<-2) dquant=-2; -+ -+ if (s->pict_type == AV_PICTURE_TYPE_B) //b frames do not support dquant=1 or dquant=-1 -+ { -+ if (dquant==1) dquant=0; // always try to quantize better not worss -+ else if (dquant==-1) dquant=-2; -+ } -+ -+ s->qscale=s->qscale+dquant; -+ -+ if (dquant) ff_set_qscale(s, s->qscale); -+ s->dquant = dquant; -+ -+ -+ -+ -+ -+ //to do convert handling -+ -+ -+ s->interlaced_dct = dec->interlaced_dct; -+ s->mb_intra = dec->mb_intra; -+ if (!s->mb_intra) { -+ s->mv_dir = dec->mv_dir; -+ s->mv_type = dec->mv_type; -+ for (dir=0; dir < 2; dir++) { -+ for (i=0; i < 2; i++) { -+ s->mv[dir][i][0] = dec->mv[dir][i][0]; -+ s->mv[dir][i][1] = dec->mv[dir][i][1]; -+ s->field_select[dir][i] = dec->field_select[dir][i]; -+ } -+ } -+ motion_x = motion_y = 0; -+ if (s->mv_type != MV_TYPE_FIELD) { -+ if (s->mv_dir == MV_DIR_FORWARD) { -+ motion_x = s->mv[0][0][0]; -+ motion_y = s->mv[0][0][1]; -+ } else if (s->mv_dir == MV_DIR_BACKWARD) { -+ motion_x = s->mv[1][0][0]; -+ motion_y = s->mv[1][0][1]; -+ } // set motion also in direct mode TODO -+ } -+ } -+ -+ if (s->pict_type == AV_PICTURE_TYPE_B){ -+ if (s->mb_intra) { -+ -+ // TODO Emulate intra blocks -+ //but first set to non intra will break dc prediction otherwise -+ s->mb_intra=0; -+ s->mv_type=MV_TYPE_16X16; -+ -+ -+ if (s->b_code<=s->f_code) { -+ s->mv_dir = MV_DIR_FORWARD; -+ motion_y = s->mv[0][0][1]=0; -+ if (s->mb_x<(s->mb_width>>1)) { -+ motion_x = s->mv[0][0][0]=-s->mb_x<<5; -+ } else { -+ motion_x = s->mv[0][0][0]=(s->mb_width-s->mb_x)<<5; -+ } -+ } else { -+ motion_y = s->mv[1][0][1]=0; -+ s->mv_dir = MV_DIR_BACKWARD; -+ if (s->mb_x<(s->mb_width>>1)) { -+ motion_x = s->mv[1][0][0]=-s->mb_x<<5; -+ } else { -+ motion_x = s->mv[1][0][0]=(s->mb_width-s->mb_x)<<5; -+ } -+ } -+ if (abs(motion_x)>1023) { -+ s->mv_dir = MV_DIR_BACKWARD|MV_DIR_FORWARD; -+ motion_x = s->mv[1][0][0]=s->mv[0][0][0]=0; -+ av_log(s->avctx, AV_LOG_ERROR, "emulation failed intra in b picture %d %d %d\n", -+ s->mb_x,s->mb_y,s->input_picture_number); -+ for (i=0;i<6;i++) { -+ dec->block_last_index[i]=-1; //skip them -+ } -+ -+ } -+ -+ -+ -+ // dec->block[4][0]=2048; //should give awkward color for spotting them -+ -+ for (i=0;i<6;i++) { -+ dec->block[i][0]-=1024; -+ } -+ -+ -+ emulate=1; -+ } else { -+ if (s->mv_type == MV_TYPE_16X8) { //this is not supported by mpeg4 emulate with 8x8 -+ s->mv_type=MV_TYPE_16X16; -+ // TODO figure out if MV_TYPE_DIRECT would give a better quality -+ // figure also out if a mean motion vector will be better -+ av_log(s->avctx, AV_LOG_ERROR, "16X8 in b picture %d %d %d\n", -+ s->mb_x,s->mb_y,s->input_picture_number); -+ -+ } -+ } -+ } else { -+ if (s->mv_type == MV_TYPE_DMV) { //this is not supported by mpeg4 emulate with 16x16 -+ s->mv_type=MV_TYPE_16X16; -+ // do we have to scale motion vector dunno -+ av_log(s->avctx, AV_LOG_ERROR, "DMV in p picture %d %d %d\n", -+ s->mb_x,s->mb_y,s->input_picture_number); -+ } -+ -+ } -+ -+ ff_update_block_index(s); -+ -+ /* update DC predictors for P macroblocks */ //must come after the update of block ndices -+ if (!s->mb_intra) { -+ if ((s->h263_pred || s->h263_aic)) { -+ if(s->mbintra_table[mb_xy]) -+ ff_clean_intra_table_entries(s); -+ } else { -+ s->last_dc[0] = -+ s->last_dc[1] = -+ s->last_dc[2] = 128 << s->intra_dc_precision; -+ } -+ -+ -+ -+ } -+ else if ( (s->h263_pred || s->h263_aic)) -+ s->mbintra_table[mb_xy]=1; -+ -+ -+ -+ if (!emulate) { -+ for (i = 0; i < 6; i++) { -+ -+ if (dec->block_last_index[i]>=0) { -+ int overflow; -+ s->block_last_index[i] = quantize_c(s, dec->block[i], i, s->qscale, -+ dec->block_last_index[i], &overflow); -+ // FIXME we could decide to change to quantizer instead of -+ // clipping -+ // JS: I don't think that would be a good idea it could lower -+ // quality instead of improve it. Just INTRADC clipping -+ // deserves changes in quantizer -+ if (overflow) -+ clip_coeffs(s, dec->block[i], s->block_last_index[i]); -+ } else -+ s->block_last_index[i] = -1; -+ } -+ } else { -+ for (i = 0; i < 6; i++) { -+ -+ if (dec->block_last_index[i]>=0) { -+ int overflow; -+ s->block_last_index[i] = quantize_emulated_intra_c(s, dec->block[i], i, s->qscale, -+ dec->block_last_index[i], &overflow); -+ // FIXME we could decide to change to quantizer instead of -+ // clipping -+ // JS: I don't think that would be a good idea it could lower -+ // quality instead of improve it. Just INTRADC clipping -+ // deserves changes in quantizer -+ if (overflow) -+ clip_coeffs(s, dec->block[i], s->block_last_index[i]); -+ } else -+ s->block_last_index[i] = -1; -+ } -+ -+ } -+ -+ -+ -+ -+ ff_mpeg4_encode_mb(s, dec->block, motion_x, motion_y); -+ ff_h263_update_motion_val(s); -+ -+ if (s->mb_x==s->mb_width-2) { -+ s->mb_x = s->mb_width-1; -+ add_zero_mb(s); -+ } -+ -+ s->avctx->time_base.den=savetimebaseden; -+ -+ -+} -+ -+void ff_mpeg4_transcode_write_picture_headers(MpegEncContext *dec,AVCodecContext* avctx) -+{ -+ Mpeg1Context *s2; -+ MpegEncContext *s; -+ int save_profile; -+ int save_level; -+ s2 = avctx->priv_data; -+ s = s2->mpeg_enc_ctx.transcode_context; -+ -+ //now transfer the decoded data to the encoding context -+ -+ -+ -+ -+ -+ -+ //picture header -+ s->pict_type = dec->pict_type; -+ -+ s->qscale = (dec->qscale>>1|1); //qscale is set in the slices maybe move this function to slice, attention so is modifing qscale in the of the picture -+ ff_set_qscale(s, s->qscale); -+ -+ s->no_rounding = 0; //does not matter related to gmc -+ s->progressive_sequence = dec->progressive_sequence; -+ s->current_picture_ptr->f.top_field_first = dec->top_field_first; -+ s->alternate_scan = dec->alternate_scan; -+ if (dec->current_picture.f.pkt_pts!=AV_NOPTS_VALUE && dec->current_picture.f.pkt_pts) { -+ //thanks to god someone is supplying hopefully clean pts values, use them!!! -+ s->current_picture_ptr->f.pts=dec->current_picture.f.pkt_pts; -+ } else { -+ // this is ugly and will probably fail, -+ // it assumes a constant b frames distance -+ -+ s->current_picture_ptr->f.pts=s->input_picture_number+0; //dirty hack, but works -+ -+ if (s->pict_type==AV_PICTURE_TYPE_B) -+ { -+ // we guess a sequence with two b frames inbetween I and P frames, -+ // as long as no DIRECT mv is used this should be fine if we are wrong -+ s->current_picture_ptr->f.pts= -+ s->current_picture_ptr->f.pts-3; -+ // if (s->current_picture_ptr->f.pts==s->last_time_base) s->current_picture_ptr->f.pts++; -+ -+ -+ } -+ -+ } -+ if (s->pict_type!=AV_PICTURE_TYPE_B) { -+ s->last_picture.f.pts=s->reordered_pts; // dirty hack -+ s->reordered_pts=s->current_picture_ptr->f.pts; -+ } -+ -+ -+ if (s->alternate_scan) { -+ ff_init_scantable(s->dsp.idct_permutation, &s->inter_scantable,ff_alternate_vertical_scan); -+ ff_init_scantable(s->dsp.idct_permutation, &s->intra_scantable,ff_alternate_vertical_scan); -+ ff_init_scantable(s->dsp.idct_permutation, &s->intra_h_scantable,ff_alternate_vertical_scan); -+ ff_init_scantable(s->dsp.idct_permutation, &s->intra_v_scantable,ff_alternate_vertical_scan); -+ } else { -+ ff_init_scantable(s->dsp.idct_permutation, &s->inter_scantable,ff_zigzag_direct); -+ ff_init_scantable(s->dsp.idct_permutation, &s->intra_scantable,ff_zigzag_direct); -+ ff_init_scantable(s->dsp.idct_permutation, &s->intra_h_scantable,ff_alternate_horizontal_scan); -+ ff_init_scantable(s->dsp.idct_permutation, &s->intra_v_scantable,ff_alternate_vertical_scan); -+ } -+ -+ s->strict_std_compliance = FF_COMPLIANCE_VERY_STRICT-1; -+ s->data_partitioning = 0; -+ s->f_code = dec->mpeg_f_code[0][0]; -+ if (dec->mpeg_f_code[0][1] > s->f_code) { -+ s->f_code = dec->mpeg_f_code[0][1]; -+ } -+ -+ //we select the maximum code, but not more than the maximal possible value, -+ -+ -+ s->b_code = dec->mpeg_f_code[1][0]; -+ if (dec->mpeg_f_code[1][1] > s->b_code) { -+ s->b_code = dec->mpeg_f_code[1][1]; -+ } -+ -+ if (s->pict_type == AV_PICTURE_TYPE_B) { -+ -+ if (s->b_code<=s->f_code) { -+ s->f_code=FFMIN(FFMAX(av_log2(s->width)-2,s->f_code),7); -+ } else { -+ s->b_code=FFMIN(FFMAX(av_log2(s->width)-2,s->b_code),7); -+ } -+ } -+ -+ //vol header -+ save_profile = s->avctx->profile; -+ save_level = s->avctx->level; -+ s->avctx->profile = FF_PROFILE_MPEG4_ADVANCED_SIMPLE; -+ s->avctx->level = 1; -+ -+ s->width = dec->width+32; // check if we need emulation black bars -+ s->height = dec->height; -+ s->mb_stride = dec->mb_stride+2; //emulating black bars -+ s->quarter_sample = 0; -+ s->ac_pred = 0; -+ -+ s->me.mb_var_sum_temp = -+ s->me.mc_mb_var_sum_temp = 0; -+ -+ -+ -+ ff_set_frame_distances(s); -+ ff_set_mpeg4_time(s); -+ -+ s->me.scene_change_score=0; -+ -+ if (s2->closed_gop) s->flags|=CODEC_FLAG_CLOSED_GOP; -+ else s->flags&=~CODEC_FLAG_CLOSED_GOP;//transverse gop flag -+ -+ -+ ff_mpeg4_encode_picture_header(s, 0); -+ s->avctx->profile = save_profile; -+ s->avctx->level = save_level; -+ -+ -+ -+ -+} -diff --git a/libavcodec/transcode.h b/libavcodec/transcode.h -new file mode 100644 -index 0000000..c1c8c85 ---- /dev/null -+++ b/libavcodec/transcode.h -@@ -0,0 +1,69 @@ -+/* -+ * Copyright (C) 2012 Marten Richter -+ * -+ * This file is part of Libav. -+ * -+ * Libav is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * Libav is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with Libav; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#ifndef AVCODEC_TRANSCODE_H -+#define AVCODEC_TRANSCODE_H -+ -+/** -+ * @file -+ * @ingroup lavc_codec_hwaccel_mpeg4_transcode -+ * Public libavcodec Mpeg4TranscodeHeader header. -+ */ -+ -+#include "avcodec.h" -+ -+/** -+ * @defgroup lavc_codec_hwaccel_mpeg4_transcode Mpeg4Transcode -+ * @ingroup lavc_codec_hwaccel -+ * -+ * @{ -+ */ -+ -+#define AV_TRANSCODE_ID 0x54524E53 /**< special value to ensure that regular pixel routines haven't corrupted the struct -+ the number speak for the letters TRNS */ -+ -+struct transcode_pix_fmt { -+ /** The field contains the special constant value AV_TRANSCODE_ID. -+ It is used as a test that the application correctly uses the API, -+ and that there is no corruption caused by pixel routines. -+ - application - set during initialization -+ - libavcodec - unchanged -+ */ -+ int transcode_id; -+ -+ /** AVPacket structure containing the buffer getting all the transcoded data -+ - application - set the pointer during initialization -+ - libavcodec - fills bitstream to packet -+ */ -+ AVPacket packet; -+ -+ /** Indicates that a new frame start in this frame -+ - application - unchanged -+ - libavcodec - set -+ */ -+ int new_frame; -+ -+}; -+ -+/** -+ * @} -+ */ -+ -+#endif /* AVCODEC_XVMC_H */ -diff --git a/libavcodec/transcode_internal.h b/libavcodec/transcode_internal.h -new file mode 100644 -index 0000000..b837fde ---- /dev/null -+++ b/libavcodec/transcode_internal.h -@@ -0,0 +1,34 @@ -+/* -+ * Transcode internal functions -+ * -+ * This file is part of Libav. -+ * -+ * Libav is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * Libav is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with Libav; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#ifndef AVCODEC_TRANSCODE_INTERNAL_H -+#define AVCODEC_TRANSCODE_INTERNAL_H -+ -+#include "avcodec.h" -+#include "mpegvideo.h" -+ -+int ff_mpeg_transcode_decode_postinit(AVCodecContext* avctx); -+void ff_mpeg4_transcode_write_picture_headers(MpegEncContext *dec,AVCodecContext* avctx); -+void ff_transcode_decode_mb(MpegEncContext *dec); -+int ff_transcode_start_picture(MpegEncContext *dec, AVCodecContext *avctx); -+void ff_transcode_end_picture(MpegEncContext *dec); -+void ff_mpeg4_transcode_mb(MpegEncContext * s, DCTELEM block[6][64], int motion_x, int motion_y); -+ -+#endif /* AVCODEC_TRANSCODE_INTERNAL_H */ -diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h -index bd898bd..9600629 100644 ---- a/libavutil/pixfmt.h -+++ b/libavutil/pixfmt.h -@@ -157,6 +157,8 @@ enum PixelFormat { - PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little endian - PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big endian - PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little endian -+ -+ PIX_FMT_TRANSCODE, ///< HW decoding of mpeg4 data[0] contains a transcode_pix_fmt structure - PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions - }; - --- -1.7.10.4 - diff --git a/src/raspi-patches/readme.txt b/src/raspi-patches/readme.txt deleted file mode 100644 index 7c3b2a5..0000000 --- a/src/raspi-patches/readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -Since now mpeg2 licenses are available, - a custom libav is not necessary anymore for transcoding. - I leave the patch here, if some one wants to pick up the idea again. - - Marten - -== Not necessary anymore == -vompclient on Raspberry PI needs its own patched libav. -Please use the skript fetch_libav.sh to download the libav from and -to apply our custom libav patches and to run the configure command. -