pax_global_header00006660000000000000000000000064134507410260014514gustar00rootroot0000000000000052 comment=a775d9a2144bfd440efe078d8bdb3ed924047300 alevt-v1.8.0/000077500000000000000000000000001345074102600130235ustar00rootroot00000000000000alevt-v1.8.0/.gitignore000066400000000000000000000000771345074102600150170ustar00rootroot00000000000000*~ *.o alevt alevt-date alevt-cap font*.xbm bdf2xbm fontsize.h alevt-v1.8.0/.gitlab-ci.yml000066400000000000000000000004271345074102600154620ustar00rootroot00000000000000image: debian:buster build: stage: build before_script: - apt update && apt -y install gcc make libzvbi-dev libpng-dev libx11-dev script: - make # artifacts: # paths: # - alevt # - alevt-date # - alevt-cap cache: paths: - "*.o" alevt-v1.8.0/CHANGELOG000066400000000000000000000465531345074102600142520ustar00rootroot00000000000000Tue Apr 2 21:05:44 CEST 2019 (1.8.0) - Changelog is now in Git at Wed Mar 7 01:35:55 MET 2012 (1.6.3) - compilation fix for libpng-1.5 (Z_DEFAULT_COMPRESSION no longer defined) Mon Dec 3 03:11:07 MET 2007 (1.6.2) - compilation fixes for newer gcc - makefile tweaks (man vs share/man, /usr/X11R6 vs /usr, etc) - default device changed to /dev/vbi0 - adapt to current v4l2 api - some minor fixes collected during the past years This is a build-time update to conform to newer compilers and system environments. If you have a running AleVT there's no reason to update. The only real fix is in the html-exporter which was producing broken html (missing double-quotes). Thu Jan 23 01:53:10 MET 2003 - Fixed a bug in contrib/cap-all.c (fdset_init before vbi_open) - Expaned cap-all.c to show how to save in two formats simultaneously. Tue Aug 20 05:22:16 MEST 2002 (1.6.1) - Removed the bttv-warning from the help pages ;-) Mon Jul 23 18:34:32 MEST 2001 - Fixed bug in ui.c - found by . - When clicking on page numbers accept sub-page numbers too. Sat Dec 23 15:12:11 MET 2000 - Fixed 'double height last line' bug in export.c reported by Thu Oct 12 02:19:31 MEST 2000 - The   fix was wrong. Removed it. Wed Oct 11 19:41:38 MEST 2000 (1.6.0) - Some documentation tweaks. - Release. Made it 1.6 because of V4l2 API. Thu Sep 21 21:07:12 MEST 2000 - Removed old bttv-only decoder. Only the v4l2-based stays. If the device does not support v4l2, default parameters appropriate for the bttv-driver are taken. - Subpage cycling (up/down and 2nd wheel) stays in the current page. Sat Sep 16 23:52:12 MEST 2000 - Experimental v4l2 interface added. - Finetune defaults to 1 now. Works best for me. Tell me if you don't like it. - Russian patch still not added :-/ - Fixed the bug in xio.c that Ben Smithurst found. - Added the dual-wheel-mouse patch from Holger Fitzner. Tue May 30 03:09:24 MEST 2000 - As Matto Fransen reported: the ; after   in exp-html is missing. fixed that. Tue May 9 20:21:52 MEST 2000 - Removed the -oldbttv/-newbttv options. If your driver has a buffer size different from that in the current bttv you either have to support the VBISIZE ioctl or change the source. (Tried to implement an autodetect by non-blocking reads but that confuses the driver that much that it no longers gives reasonable data.) - Added a compression option to the png export filter and changed the default compression level to the lib's default. The prev default of 9 was way to slow. Wed May 3 19:18:55 MEST 2000 - Added a smaller font. Made out of the neep9 font from the really great jmk-fonts (http://www.pobox.com/~jmknoble). Sat Apr 29 02:36:41 MEST 2000 - Fixed SEGV in export.c:adjust. - Fixed a possible buffer overrun in exp-txt.c Thu Nov 4 21:18:52 MET 1999 (1.5.1) - Added os.h. That way alevt compiles right out of the box on all BSD systems (I hope *g*). - Fixed the DST bug in alevt-date. - Put vtwiz.pl in contrib, a perl/tk/set-tv script to launch alevt written by Joern Borgert. Tue Oct 26 23:55:09 MEST 1999 (1.5.1-pre1) - Added timeout option to alevt-cap. - Use install instead of cp in the Makefile. - Added -I/usr/local/include and -L/usr/local/lib in the Makefile. - Changed #ifdef FREEBSD to #ifdef BSD. - exchanged contrib/paul-export.patch with paul.fmt_page.c (a replacement for export.c:fmt_page()) and paul.fmt_page.patch (the same in form of a patch file). - Some doc corrections. Thu Oct 14 02:49:48 MEST 1999 - Added FREEBSD patches. Fri Oct 8 23:36:45 MEST 1999 (1.5.0) - Updated the documentation. So, what's new since 1.4.9 (nearly 4 months ago)? Two major things: full latin-2 support and export filters for alevt-cap and alevt itself. For the latin-2 support page enhancement packets have to be decoded and some latin-1 pages may benefit from that, too. Note: if you select latin-2 everything is latin-2, even cut'n paste. (new cmdline option -charset latin-1|2) The export filters allow saving pages in different formats. At the moment there's ascii (with and with- out color), html, png, and ppm. The png filter requires libpng. If you don't have it (or don't want png support) just remove the WITH_PNG from the Makefile. To save the currently displayed page just press 's'. See alevt-cap(1) for the format string. Preview: 1.5.1 will have the FreeBSD patches and any bug fixes. (But not more *g*). Fri Oct 8 02:06:35 MEST 1999 (1.5.0-pre4) Finally I could get away from my Playstation and work a little bit on alevt *g* - Tried to change alevt-date with freebsd patches from Thomas Runge . They do not have the timezone and daylight variables. But I do not have tm_gmtoff. So it's commented out for the moment. - Made font.[ch] so that only one copy of the fonts is in the executable when including export modules (exp-gfx.c uses them). Had to tweak the makefile. - Added 's' for saving pages to files. Prompts for a format string and a filename and saves the currently displayed page. (Formerly, 's' and 'S' were aliases for '/' and '?' (searching)) - Found a bug in export.c regarding double height lines. - Added a patch to the contrib dir to pass the URL you click on to netscape. The documentation updates are still missing. That's the last thing to do for 1.5.0. But that's so boring... Fri Aug 20 21:28:18 MEST 1999 Back from holidays and time for alevt... - Added html, png, and ppm export modules from Paul. - Fixed the return status for export_output. - Tweaked the makefile for libpng support. - Added the export howto to the contrib dir. - Added Paul's fmt_page routine to contrib as a patch to export.c - Added "-format help" to list all output formats and its options. Still to do: update man page of alevt-cap, add export to alevt, add erc to alevt-cap. Oh, btw, alevt is running on FreeBSD with the bt848 driver from Roger Hardiman *g*. I wonder if it's possible to port his driver to linux. Maybe it runs better then bttv... (I still get reports with stuck xawtvs ...) Mon Jul 19 01:15:50 MEST 1999 (1.5.0-pre3) - Added export modules. It's gotten much to complex. A lot of things still to do: add other formats [Paul?], add documentation, add format-help, add export to alevt, add erc to alevt-cap, ... Mon Jul 12 00:09:03 MEST 1999 - Added an incomplete 20x24 font to the contrib dir. Tue Jun 29 00:46:03 MEST 1999 (1.5.0-pre2) - Added lanugage tables from Radoslaw. - Added new latin-2 font from Radoslaw. - Fixed a bug with hold graphics. There's still one bug on CNN's page 100 (has to do with set-after behaviour of color select in hold graphics mode). The last line of the earth should be blue-blue-green not blue-green-green. AleVT always uses set-at behaviour. Afaik, this combination (hold + set-after) is the only way to see the difference between set-at and set-after. Set-after will blow up the code so I will leave it as it is. - vbi now collects all pkt26 and enhances the page before it is passed on. Seem's to work. Tue Jun 22 22:13:45 MEST 1999 (1.5.0-pre1) - Fixed hamm24. And, it should be fast now *g* - Moved the language conversion parts to lang.c - Added additional lang_chars for use with the latin-2 charset. - Added -charset latin-1/2 option. - Added pkt x/26 decoding. ... and noticed, that these packets are sent between line 0 and 1. FUCK. Now I have to save all x/26 until the page is complete. But not today... :-( Things are getting more and more uglier. The right thing to do would be to make a big font with all possible chars (including cyrillic, arabic, smoothed graphics, ...). That would mean to make each char in vtp->data 16 bit. And then add an attribute word for each char so that the enhanced attributes work, too. Searching and cut & paste would be more complicated... but the worst, the pages will be much bigger (4 times larger). Really bad for the cache and god knows for what else... Is it worth all the trouble??? I don't need that! Tue Jun 15 01:25:40 MEST 1999 - Changed .specs file again. I previously changed alevt.spec instead of alevt.spec.in :-( Mon Jun 14 23:45:48 MEST 1999 (1.4.9) - Made a very simple capture program (alevt-cap). Just collects the given pages and writes them to disk in ASCII. I will only accept bug reports/fixes, no enhancement requests at the moment *g* (I can't believe it; I even wrote a man page...) - Changed the subpage delimiter on the command line from '/' to '.' The old one ('/') is still accepted. (Reason: alevt-cap uses the page number as part of the filename and a / is inconvenient. And I already wanted to let you enter subpages with the keypad and the '.' would be a nice key for that.) - Tweaked the .specs file... (Btw, alevt-date and alevt-cap should not be installed in the X11 tree.) Thu Jun 10 22:13:40 MEST 1999 - moved the hamming decoding and associated table to hamm.c - played with pkt26 to support polish stations. not finished. Tue Jun 8 21:00:42 MEST 1999 - Added -[no]bell option. And the 'b' key. - Replaced all xio_bell calls with appropriate status messages. Sat Jun 5 00:42:19 MEST 1999 (1.4.8) - Shit. Just after the release I found a bug. The header line isn't updated as it should :-( (Just affects parallel mode transmission, so no new version, yet.) - Created mailing list. Either go to http://alevt.listbot.com/ or write mail to alevt-subscribe@listbot.com. - Added bttv-patch to the contrib dir for those who don't want to wait for bttv-0.6.5. Fri Jun 4 17:19:41 MEST 1999 (1.4.7) - Added autodetection of VBIBUF_SIZE (only with newer bttv, 0.6.5). - Forgot to close vbi_fd in vbi_close :-/ - Made ERC on by default. If the page has no errors it costs nothing and if it has you'll turn it on anyway. - Changed parameters of EV_HEADER. - Removed XAWTV_HACKS. - Updated some docu. - Modified the contrib samples to reflect previous API changes. Fri May 28 20:16:44 MEST 1999 - Added status messages. - Added EV_TIMER event. - Added channel change detection (only with newer bttv, 0.6.5). Sends EV_RESET event. The XAWTV_HACKS can be removed *phww*. Now the cache is automatically cleared if you switch to a new channel. It even works with a SAT receiver connected to Video-In. Thu May 27 23:54:32 MEST 1999 (1.4.6 unofficial) - Cache reset didn't reset npages and hi_subno. - Added XAWTV_HACKS, that is: alevt scans for a window with the _XAWTV_STATION property and registers for property changes. Result: when switching channels in xawtv, the cache is cleared. (This is just an ugly hack. Xawtv must already be running when alevt is started. If you quit and restart xawtv, it no longer works. There's no method to detect if the monitored xawtv is really the one controlling our /dev/vbi, etc...) Added on request of Paul Ortyl . - Added error reduction circuit. It's part of the cache. Errors in a new page are replaced by characters/lines from an already cached (older) page. May be toggled by pressing 'e' (editor is now on 'E'). It's not enabled by default because it takes some CPU time. Idea by Paul Ortyl. - TODO: clean up. document new features. add status messages. Sun May 23 19:13:07 MEST 1999 (1.4.5) - New spec file from Karsten Hopp - Changed it even further *g* - Fixed a bug with graphics selection of double height lines. - Documented the -oldbttv option in the man page. Now it's in every page. This should finally halve the mails I get. (For the other halve I have to write alevt-capture *g*) Sat May 8 02:41:21 MEST 1999 - Ehhh, changed u32 typedef from unsigned long to unsigned int. Same for s32. The Alpha's longs are 64 bits. Thanks to Sdruddin Rejeb . (There's something strange with this in the X libs. They are sometimes very lazy about ints and longs. Someone with an Alpha should check the cut & paste, both, text and graphics selections.) Thu Apr 29 22:38:37 MEST 1999 - Updated contrib/t1.c - Added ':' as a subpage delimiter for clicking (2:7 is the same as 2/7) Mon Apr 19 19:40:09 MEST 1999 - Switched the scrolling direction of the wheel Mon Mar 29 01:23:06 MEST 1999 (1.4.4) - fixed DST bug in alevt-date - added crude latin-2 support. 'make FONT=latin-2' should be enough. (found the stuff on the website http://www.penguin.cz/~marvin/ of Daniel Smolik . I don't know if he is the one who made the font). Wed Mar 17 20:53:59 MET 1999 - added timeout to alevt-date Fri Feb 19 18:22:53 MET 1999 (1.4.3> - Makefile changes. Fri Jan 29 18:01:27 MET 1999 - fixed bug in dllist.h. dl_insert_first(h, dl_remove(n)) was only working due to gcc implementation details. Mon Jan 25 18:33:42 MET 1999 (1.4.2) - fixed 'clear cache'. no longer removes the help pages. - made next/prev key/button to skip missing pages. - added support for wheeled mice. (I heard it's really cool *g*) - problem with subpages > 0xff fixed. Thu Jan 21 17:31:46 MET 1999 (1.4.1) - added man pages from Thomas Schoepf . - added rpm-spec file from Mario Mikocevic . (looks a little bit odd, but I don't know very much about rpms) - minor option fix in alevt-date (people are really using it!?!) Tue Jan 5 03:50:08 MET 1999 (1.4.0) - should be 1.3.10 but that gives problems with the help pages :-( - fixed varargs for alpha - default is now -newbttv (aka -fuckbttv). use -oldbttv for v<0.5.20. Sat Jan 2 21:40:54 MET 1999 - small patches to alevt-date (-vbi options and tzset fix) - played with pkt8/30. what a mess. MTV is 25:13 ahead *g* Wed Dec 30 19:30:14 MET 1998 (1.3.9) - slightly modified the pll (may need further tuning) Wed Dec 30 05:27:26 MET 1998 (1.3.8) - added pll (-finetune auto). try -debug for status msgs. Tue Dec 29 05:15:53 MET 1998 (1.3.7) - added finetune option (see README) - you may now type -newbttv instead of -fuckbttv *g* Mon Dec 28 19:36:32 MET 1998 (1.3.6) - Makefile: R5 -> R6 :-( - vbi.c now works without cache.c - added alevt-date (set system time from teletext) - bug in option parsing (error reporting) Thu Dec 17 19:56:16 MET 1998 (1.3.5) - added -L/usr/X11R6/lib in Makefile - put some blurb (in german) in contrib. Thu Dec 17 05:01:34 MET 1998 (1.3.4) - added class hints on (invisible) leader window to make docking in wmaker easier. instant name for leader is "VTLeader" and for the viewing windows "VTPage" - made the icon a little bit smaller Mon Dec 14 23:05:41 MET 1998 (1.3.3) Release 1.3.3 - added spanish/portuguese charset decoding - added similar looking glyphs for czech - minor changes on the font - middle click on current page number opens new parent window - case dependant search if the pattern begins with a '!' - line editing may be aborted with ^C Sun Dec 13 17:55:32 MET 1998 (1.3.2) - when there were multiple windows of the same page, cycling through the subpages changed all windows. fixed. - hilight the found text (make it the selection). - slightly modified the hilight colors. - default window size set to 41x25 (looks better). - rewrote the editor. Sun Dec 13 07:03:10 MET 1998 (1.3.1) - fixed one command line option - corrected bug in searching Sat Dec 12 20:27:03 MET 1998 (1.3.0) Release 1.3.0 - searching is now ready (still need a status line for error msgs). - set SIGPIPE to SIG_DFL. some shells (KDE) set it to SIG_IGN and then the timer task won't be killed on exit. - updated the help pages. - I'm frustrated! BTTV_VERSION doesn't work on /dev/vbi. So no autodetection of driver version. Added -fuckbttv option instead. Fri Dec 11 19:36:03 MET 1998 (1.2.5) - reworked national charset (lang) handling. everthing now done in vbi.c. the rest just deals with latin-1. - first version of searching (functional, but dirty. needs more work.) Thu Dec 10 20:06:27 MET 1998 (1.2.4) - new file edline.c (line editor for the menu line. start for searching...) - blinking cursor - added an 48x48 icon from Ulf Rompe - added pasting into the line editor (insert key). - release ownership of XA_PRIMARY when deselecting selection. Tue Dec 8 21:26:26 MET 1998 (1.2.3) - new file ui.c (most user interface stuff from main.c) - rewrote option parsing - allow specification of child windows on command line. now it's possible to regenerate the complete window layout by the commandline (may be of some use for session management). - some spelling fixes in the help pages from Mark Bryars Mon Dec 7 16:59:28 MET 1998 (1.2.2) - reworked hidden handling in xio.c Sun Dec 6 19:54:10 MET 1998 (1.2.1) - class name changed! from Alevt to AleVT. - window/icon title shows current page number - changed the icon to a 64 pixel width one. not nice but ... - added a small mini icon for the title bar. is there a property I can set? - pressing on the CPN puts the page on hold - pressing on the violet * reveals concealed text - added simple menu if no FastText menu is present - allow subpages to be specified on the command line (eg 100/4) Sat Dec 5 20:59:51 MET 1998 (1.2.0) Release 1.2.0 - finished the help pages. - added command line handling - added user geometry handling in xio.c Sat Dec 5 02:28:16 MET 1998 (1.1.2) - allow magazin 9 (help system) - start box char after a pagenumber selects subpage 1 (hack) - added a crude page editor (just to create the help pages. not for users.) - started with the online help system (sounds great, hehe) Tue Dec 1 20:19:53 MET 1998 (1.1.1) - added concept of parent and child windows. now, the middle mouse button changes the contens of the child window. if there isn't one, it is created. - Middle mouse button on x/y (subpage cycling) selects the previous subpage. (updating the child with subpages is hairy...) Sun Nov 29 23:34:18 MET 1998 (1.1.0) Release 1.1.0 - removed most of the recovery for single bad lines (does too much harm) - changed handling of parallel mode transmission (untested. unused in .de) - added selection (text & graphic!). try pasting into xpaint :-) - added cache-clear function ('c') - click on x/y selects the next subpage - some minor tweaks - added an icon bitmap. Wed Nov 24 23:33:34 MET 1998 (1.0.0) First Release 1.0.0 alevt-v1.8.0/COPYRIGHT000066400000000000000000000366031345074102600143260ustar00rootroot00000000000000This message applies to all files within the archive: Copyright (C) 1998,1999,2000 Edgar Toernig (froese@gmx.de) All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License Version 2 as published by the Free Software Foundation. This program 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 General Public License for more details. And here's the GNU GPL V2: GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS alevt-v1.8.0/Makefile000066400000000000000000000122461345074102600144700ustar00rootroot00000000000000VER=1.8.0 OPT=-O2 -g -w #OPT=-O -g DEFS=-DWITH_PNG #DEFS+=-DUSE_LIBZVBI FONT=vtxt USR_X11R6=/usr/X11R6 #USR_X11R6=/usr MAN_DIR=man #MAN_DIR=share/man HOSTCC=$(CC) # a smaller and thinner font #FONT=neep9 DESTDIR= PREFIX=/usr/local CFLAGS=$(OPT) -DVERSION=\"$(VER)\" $(DEFS) -I$(USR_X11R6)/include EXPOBJS=export.o exp-txt.o exp-html.o exp-gfx.o font.o OBJS=main.o ui.o xio.o fdset.o vbi.o cache.o help.o edline.o search.o edit.o misc.o hamm.o lang.o $(EXPOBJS) TOBJS=alevt-date.o vbi.o fdset.o misc.o hamm.o lang.o COBJS=alevt-cap.o vbi.o fdset.o misc.o hamm.o lang.o $(EXPOBJS) ifneq ($(findstring WITH_PNG,$(DEFS)),) EXPLIBS=-lpng endif ifneq ($(findstring USE_LIBZVBI,$(DEFS)),) ZVBILIB=-lzvbi -lpthread EXPLIBS+=$(ZVBILIB) endif all: alevt alevt-date alevt-cap alevt.1x alevt-date.1 alevt-cap.1 alevt: $(OBJS) $(CC) $(OPT) $(OBJS) -o alevt -L$(USR_X11R6)/lib -L$(USR_X11R6)/lib64 -lX11 $(EXPLIBS) alevt-date: $(TOBJS) $(CC) $(OPT) $(TOBJS) -o alevt-date $(ZVBILIB) alevt-cap: $(COBJS) $(CC) $(OPT) $(COBJS) -o alevt-cap $(EXPLIBS) font.o: font1.xbm font2.xbm font3.xbm font4.xbm fontsize.h: font1.xbm font2.xbm font3.xbm font4.xbm fgrep -h "#define" font1.xbm font2.xbm font3.xbm font4.xbm >fontsize.h font1.xbm: bdf2xbm $(FONT)-latin-1.bdf ./bdf2xbm font1 <$(FONT)-latin-1.bdf >font1.xbm font2.xbm: bdf2xbm $(FONT)-latin-2.bdf ./bdf2xbm font2 <$(FONT)-latin-2.bdf >font2.xbm font3.xbm: bdf2xbm vtxt-koi8.bdf ./bdf2xbm font3 font3.xbm font4.xbm: bdf2xbm vtxt-iso8859-7.bdf ./bdf2xbm font4 font4.xbm bdf2xbm: bdf2xbm.c $(HOSTCC) bdf2xbm.c -o bdf2xbm alevt.1x: alevt.1x.in sed s/VERSION/$(VER)/g alevt.1x alevt-date.1: alevt-date.1.in sed s/VERSION/$(VER)/g alevt-date.1 alevt-cap.1: alevt-cap.1.in sed s/VERSION/$(VER)/g alevt-cap.1 clean: rm -f *.o page*.txt a.out core bdf2xbm font?.xbm fontsize.h Makefile.bak rm -f alevt alevt-date alevt-cap rm -f alevt.1x alevt-date.1 alevt-cap.1 rm -f contrib/a.out ttext-*.* rm -f alevt.html rpm-install: all install -m 0755 alevt ${RPM_BUILD_ROOT}$(USR_X11R6)/bin install -m 0755 alevt-date ${RPM_BUILD_ROOT}$(USR_X11R6)/bin install -m 0755 alevt-cap ${RPM_BUILD_ROOT}$(USR_X11R6)/bin install -m 0644 alevt.1x ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1 install -m 0644 alevt-date.1 ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1 install -m 0644 alevt-cap.1 ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1 install -d 0755 $(RPM_BUILD_ROOT)$(USR_X11R6)/include/X11/pixmaps install -m 0644 contrib/mini-alevt.xpm $(RPM_BUILD_ROOT)$(USR_X11R6)/include/X11/pixmaps # anything below this line is just for me! install: all install -m 0755 -d $(DESTDIR)$(PREFIX)/bin install -m 0755 alevt $(DESTDIR)$(PREFIX)/bin install -m 0755 alevt-date $(DESTDIR)$(PREFIX)/bin install -m 0755 alevt-cap $(DESTDIR)$(PREFIX)/bin install -m 0755 -d $(DESTDIR)$(PREFIX)/share/man/man1 install -m 0644 alevt.1x $(DESTDIR)$(PREFIX)/share/man/man1 install -m 0644 alevt-date.1 $(DESTDIR)$(PREFIX)/share/man/man1 install -m 0644 alevt-cap.1 $(DESTDIR)$(PREFIX)/share/man/man1 install -m 0755 -d $(DESTDIR)$(PREFIX)/share/pixmaps install -m 0644 contrib/mini-alevt.xpm $(DESTDIR)$(PREFIX)/share/pixmaps depend: makedepend -Y -- $(CFLAGS_none) -- *.c 2>/dev/null tar-html: alevt.1x alevt-date.1 alevt-cap.1 for i in alevt.1x alevt-date.1 alevt-cap.1 ; do \ j=`basename $$i .1` ; \ j=`basename $$j .1x` ; \ nroff -man $$i | { \ echo "AleVT" ; \ man2html -bare -uelem U -nodepage ; \ echo "" ; \ } | sed -e "s, , ,g" -e "s, , ,g" >~/exit/alevt/$$j.html ;\ done tar: tar-html clean sed s/VERSION/$(VER)/g ~/exit/alevt/alevt-$(VER).lsm sed s/VERSION/$(VER)/g alevt.spec cd .. ;\ ln -s alevt alevt-$(VER) ;\ tar vcfz ~/exit/alevt/alevt-$(VER).tar.gz alevt-$(VER)/* ;\ rm alevt-$(VER) cat ~/exit/alevt/changes # DO NOT DELETE alevt-cap.o: vt.h misc.h fdset.h dllist.h vbi.h cache.h lang.h export.h alevt-date.o: os.h vt.h misc.h fdset.h dllist.h vbi.h cache.h lang.h cache.o: misc.h dllist.h cache.h vt.h help.h edit.o: vt.h misc.h xio.h dllist.h vbi.h cache.h lang.h edit.h edline.h edline.o: vt.h misc.h xio.h dllist.h edline.h exp-gfx.o: lang.h misc.h vt.h export.h font.h fontsize.h exp-html.o: lang.h misc.h vt.h export.h exp-txt.o: os.h export.h vt.h misc.h export.o: vt.h misc.h export.h fdset.o: dllist.h misc.h fdset.h font.o: font1.xbm font2.xbm hamm.o: vt.h misc.h hamm.h help.o: vt.h misc.h vt900.out vt902.out vt903.out help.o: vt901-04.out vt901-03.out vt901-02.out vt901-01.out help.o: vt910.out vt911-02.out vt911-01.out vt912-02.out vt912-01.out help.o: vt913.out vt914-02.out vt914-01.out vt915.out vt999.out lang.o: misc.h vt.h lang.h main.o: vt.h misc.h fdset.h dllist.h xio.h vbi.h cache.h lang.h ui.h edline.h main.o: search.h misc.o: misc.h search.o: vt.h misc.h cache.h dllist.h search.h ui.o: vt.h misc.h xio.h dllist.h vbi.h cache.h lang.h fdset.h edit.h edline.h ui.o: search.h export.h ui.h vbi.o: os.h vt.h misc.h vbi.h dllist.h cache.h lang.h fdset.h hamm.h xio.o: vt.h misc.h dllist.h xio.h fdset.h lang.h icon.xbm font.h fontsize.h alevt-v1.8.0/README.md000066400000000000000000000006501345074102600143030ustar00rootroot00000000000000# AleVT This is a program for viewing Videotext/Teletext from /dev/vbi and /dev/dvb/adapterN/demuxN devices. This fork of AleVT takes over from where [LinuxTV][legacy] ended. It's forked from Edgar TΓ¶rnig's last release in 2003 and incorporates patches from Debian, LinuxTV and other sources. [legacy]: https://www.linuxtv.org/downloads/legacy/ # Web site The new web site for AleVT is https://gitlab.com/alevt/alevt alevt-v1.8.0/README.old000066400000000000000000000051731345074102600144660ustar00rootroot00000000000000Hi, Menden, 21 Sep 2000 This program decodes and displays Videotext/Teletext from a /dev/vbi device. COMPILE & INSTALL: There's nothing to configure. A simple 'make' is all. If you do not want png support remove the WITH_PNG in the Makefile. Additionally, if you want a smaller font uncomment the "FONT=neep9" line. It gives you 'alevt', 'alevt-date', and 'alevt-cap' and their man pages 'alevt.1x', 'alevt-date.1', and 'alevt-cap.1'. You can install them where ever you want (i.e. /usr/local/bin). The programs are self-contained and require no other files. NOTE: Be careful with 'make install'. It's just for me :-) PROBLEMS: If you have a lot of decoding errors (lot of these lightning symbols) you may try pressing the 'f' and 'F' key. This allows fine tuning of the decoder circuit. There's also a -finetune command line option. This should only be necessary on really bad signals. Maybe, I add autotuning later... UPDATE: added autotuning. It's the default. If you add -debug the the actions of the pll are printed to stdout. To get the old (pre finetune) behaviour start it with -finetune 0. UPDATE: disabled autotuning *g* sometimes it's too jumpy... ALEVT-DATE: I added a little tool to set the system time from the videotext time. The date is not interpreted (not even transmitted on some channels). So it allows only adjustment of +/-12 hours. The default allowed adjustment is limited to +/-2 hours (use -delta to change). Without the -set option it just display the date in the format of the date command. Look at strftime(3) for possible control sequences you may use in the -format option. HACKING: If you want to play with the font size, you may resize it with xv (xv font1.xbm). Just make sure, that its width is a multiple of 32 and its height a multiple of 8. A simple make will create a version of AleTV with the new font. Warning: a make clean will erase font1.xbm. The next make will recreate font.xbm from vtxt.bdf. AleVT has a built in page editor. If you start it with -editor you may press 'E' to invoke it. For the usage you have to consult the sources. (It's very crude!) TODO: (no specific order) - Error correction in alevt-cap - Better language support. Internal 16-bit charset. - Separated graphics. - Rewrite the whole stuff. A networked teletext daemon and clients that connect to it for display, capture, cgi, ... NEWER VERSIONS: The primary site of AleVT is http://goron.de/~froese Have fun, Edgar Toernig (froese@gmx.de) alevt-v1.8.0/ReadmeGR000066400000000000000000000015531345074102600144000ustar00rootroot0000000000000029-9-2003 Ελληνικά για το ALEVT Η προσθήκη Ελληνικών έγινε τροποποιώντας το patch alevt-1.6.1.rus.diff που βρίσκετε στο φάκελο contrib στα sources του alevt-1.6.1 Ξεκινήστε το πρόγραμμα με την παράμετρο alevt -charset iso8859-7 η alevt -charset el Δουλειές που έχουν να γίνουν: Καλύτερος σχεδιασμός του font file vtxt-iso8859-7.bdf οι Αγγλικοί χαρακτήρες μοιάζουν σαν bold σε σχέση με τους Ελληνικούς και υπάρχουν κάποια μικρά προβληματάκια με τους graphics (0x01 -0x1f) Έλεγχος για το αν απεικονίζονται σωστά όλοι οι χαρακτήρες Όποιος θέλει να βοηθήσει παρακαλώ να μου στείλει της αλλαγές του στο sl45sms@yahoo.gr Αν κάποιος κάνει εκτεταμένες αλλαγές που δεν αφορούν τα Ελληνικά θα πρέπει να τις στείλει και στον συγγραφέα του προγράμματος Νεότερά αρχεία του παρόντος θα μπορείτε να βρίσκετε στο http://go.to/sl45sms/alevt/index.html Σκαρβέλης Παναγιώτης alevt-v1.8.0/alevt-cap.1.in000066400000000000000000000106561345074102600153760ustar00rootroot00000000000000.na .TH ALEVT-CAP 1 "VERSION" LINUX "Teletext capture" .SH NAME alevt-cap \- simple capture of teletext pages .SH SYNOPSIS .B alevt-cap .RI [ options ] .IR ppp [ .ss ] .I \.\.\. .SH "DESCRIPTION" .B alevt-cap is a simple program to capture teletext pages and write them to disk. You just give it a list of pages to fetch and it will save them. Nothing fancy like time-outs, page ranges, or channel name detection is supported. Though, it supports different file formats - at the moment ascii, ansi (ascii with color escape sequences), html, png, and ppm. .SH OPTIONS A summary of options is included below. .TP .BI \-name \ filename Gives the filename under which the pages should be saved. It may contain a couple of %-sequences (see below). (default: ttext-%s.%e) .TP .BI \-format \ format-specifier Sets the file format used to save pages (see below). (default: ascii) .TP .BI \-format \ list\||help Lists all known file formats and their options. .TP .BI \-vbi \ device Use the given device name. Default: /dev/vbi, /dev/vbi0, /dev/video0, /dev/dvb/adapter0/demux0 tried in this order. .TP .BI \-finetune \ \-4..4\||auto Specify the fine tuning for the decoder. For the right value play with .BR alevt . Default: 1. .TP .BI \-timeout \ seconds If the pages cannot be captured in .IR seconds , the program terminates with exit status 1 after saving the already captured pages. The default is to wait forever. .TP .BI \-charset \ latin-1\||latin-2\||koi8-r\||iso8859-7 Selects the character set to use. Characters not present in the selected set are replaced by similar looking symbols. (default: latin-1) .TP .BI \-progname \ name Specifies the program name if using the DVB interface. .TP .BI \-pid \ pid Specifies the teletext PID if using the DVB interface. .TP .B \-\-help Show summary of options. .TP .B \-\-version Show version of program. .PP Every non-option argument is taken as a page number. Subpages may be given in the form .IB ppp . ss where .I ppp is the page number and .I ss is the subpage number. If no subpage is specified, the first transmitted subpage of that page is taken. The page is saved with the prior given format and name. .SS Filenames The filename may contain %-sequences. The following sequences are defined: .RS .TP .B %% a single % sign. .TP .B %e the default extension of the selected output format. .TP .B %p the page number and an optional subpage number. .TP .B %P the page number. .TP .B %S the subpage number. .TP .B %s the page number as given on the command line. .RE .PP Between the % sign and the letter you can give a field width to which the replacement string should be padded. .SS Format specifiers The output format and associated options are given by the format specifier. It is made up of one or more comma separated words. The first word selects the output format and the others are options for that format. There are common options valid for all output formats and format specific (private) ones. Some options have the form of an assignment. The order of the options is free. Only the format name itself must be the first word. An example: .TP .B ansi,reveal,bg=none The .B ansi is the format and .BR reveal , and .BR bg=none are options. .PP At the moment there are only two common options: .BR reveal , and .BR hide . They control whether the hidden characters present in a page should be shown in the output or not. The default is .BR hide . .PP The special format string .B list (or .BR help ) will give you a list of all supported output formats and their options. .PP (The .B ansi format is an alias for .BR ascii,color .) The .B \-progname or .B \-pid option specifies the program or teletext PID if using the DVB interface. If neither of these two options is used, alevt outputs informations about the currently accessible streams and uses the first of these PIDs as default. This output contains the PIDs and names that can be used as an input for the .B \-progname or .B \-pid option in the context of the currently chosen TV channel. .SH DIAGNOSTICS If the program timed out and some pages are missing the exit status is 1. On fatal errors the exit status is 2. .SH NOTE Before starting this program, you have to set the TV channel with another program like .B xawtv of .BR set-tv . .SH FILES .I /dev/vbi* .I /dev/dvb/adapter*/demux* .SH SEE ALSO .BR alevt (1x), .BR alevt-date (1), .SH BUGS If you give a page number that is never transmitted the program will not terminate. .PP Bug reports to . alevt-v1.8.0/alevt-cap.c000066400000000000000000000172761345074102600150600ustar00rootroot00000000000000#include #include #include #include #include #include #include "vt.h" #include "misc.h" #include "fdset.h" #include "vbi.h" #include "lang.h" #include "dllist.h" #include "export.h" int debug = 0; static volatile int timed_out = 0; struct req { struct dl_node node[1]; char *name; // file name char *pgno_str; // the pgno as given on the cmdline int pgno, subno; // decoded pgno struct export *export; // export data struct vt_page vtp[1]; // the capture page data }; static void usage(FILE *fp, int exitval) { fprintf(fp, "\nUsage: %s [options] ppp[.ss]...\n", prgname); fprintf(fp, "\n" " Valid options:\t\tDefault:\n" " --help\n" " --version\n" " -vbi \t\t/dev/vbi0\n" " -finetune <-4..4|auto>\t0\n" //" -oldbttv\t\t\t(for bttv <0.5.20)\n" " -charset latin-1/2/koi8-r/iso8859-7\tlatin-1\n" " -timeout \t\tnone\n" " -name \t\tttext-%%s.%%e\n" " -format \tascii\n" " -format help\n" " -progname name\n" " -pid pid\n" "\n" " ppp[.ss] stands for a page number and an\n" " optional subpage number (ie 123.4). If\n" " the subpage number is omitted the first\n" " transmitted subpage is captured.\n" "\n" "\n" " To use the DVB interface, use\n" " -vbi /dev/dvb/adapter0/demux0\n" "\n" " The -progname or -pid option specify\n" " the program or teletext PID if using\n" " the DVB interface.\n" ); exit(exitval); } static void exp_help(FILE *fp) { struct export_module **ep; char **cp, c; fprintf(fp, "\nSyntax: -format Name[,Options]\n" "\n" " Name\tExt.\tOptions\n" " --------------------------------\n" ); for (ep = modules; *ep; ep++) { fprintf(fp, " %-7s\t.%-4s", (*ep)->fmt_name, (*ep)->extension); for (c = '\t', cp = (*ep)->options; cp && *cp; cp++, c = ',') fprintf(fp, "%c%s", c, *cp); fprintf(fp, "\n"); } fprintf(fp, "\n" "Common options: reveal,hide\n" "\n" "Example: -format ansi,reveal,bg=none\n" "\n" ); exit(0); } static void sig_handler(int sig) { if (debug) write(2, "*BREAK*\r\n", 9); timed_out = 1; } static int arg_pgno(char *p, int *subno) { char *end; int pgno; *subno = ANY_SUB; if (*p) { pgno = strtol(p, &end, 16); if ((*end == ':' || *end == '/' || *end == '.') && end[1]) *subno = strtol(end + 1, &end, 16); if (*end == 0) if (pgno >= 0x100 && pgno <= 0x899) if (*subno == ANY_SUB || (*subno >= 0x00 && *subno <= 0x3f7f)) return pgno; } fatal("%s: invalid page number", p); } static int option(int argc, char **argv, int *ind, char **arg) { static struct { char *nam, *altnam; int arg; } opts[] = { { "--help", "-h", 0 }, { "--version", "-v", 0 }, { "-copyright", "-©", 0 }, { "-debug", "--debug", 0 }, { "-vbi", "-dev", 1 }, { "-newbttv", "-new", 0 }, { "-oldbttv", "-old", 0 }, { "-finetune", "-f", 1 }, { "-charset", "-latin", 1 }, { "-format", "-fmt", 1 }, { "-name", "-o", 1 }, { "-timeout", "-t", 1 }, { "-progname", "-pn", 1 }, { "-pid", "--pid", 1 }, }; int i; if (*ind >= argc) return 0; *arg = argv[(*ind)++]; for (i = 0; i < NELEM(opts); ++i) if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam)) { if (opts[i].arg) if (*ind < argc) *arg = argv[(*ind)++]; else fatal("option %s requires an argument", *arg); return i+1; } if (**arg == '-') { fatal("%s: invalid option", *arg); usage(stderr, 2); } return -1; } static void event(struct dl_head *reqs, struct vt_event *ev) { struct req *req, *nxt; switch (ev->type) { case EV_PAGE: // new page { struct vt_page *vtp = ev->p1; for (req = PTR reqs->first; nxt = PTR req->node->next; req = nxt) if (req->pgno == vtp->pgno) if (req->subno == ANY_SUB || req->subno == vtp->subno) { if (debug) printf("captured page %x.%02x\n", vtp->pgno, vtp->subno); *req->vtp = *vtp; dl_insert_last(reqs + 1, dl_remove(req->node)); // the same page may be there in different formats. // so, don't break. //break; } } } } int main(int argc, char **argv) { char *vbi_name = NULL; int fine_tune = 1; // auto = 999; int newbttv = -1; int timeout = 0; char *fname = "ttext-%s.%e"; char *out_fmt = "ascii"; struct export *fmt = 0; int opt, ind; char *arg; struct vbi *vbi; struct req *req; struct dl_head reqs[2]; // simple linear lists of requests & captures char *progname = NULL; int txtpid = -1; setprgname(argv[0]); fdset_init(fds); dl_init(reqs); // the requests dl_init(reqs+1); // the captured pages ind = 1; while (opt = option(argc, argv, &ind, &arg)) switch (opt) { case 1: // help usage(stdout, 0); break; case 2: // version printf("AleVT Version "VERSION"\n"); exit(0); case 3: // copyright printf("Copyright 2000 by E. Toernig, froese@gmx.de\n"); exit(0); case 4: // debug debug++; break; case 5: // vbi vbi_name = arg; break; case 6: // newbttv newbttv = 1; break; case 7: // oldbttv newbttv = 0; break; case 8: // finetune if (streq(arg, "auto")) fine_tune = 999; else fine_tune = strtol(arg, 0, 10); break; case 9: // charset if (streq(arg, "latin-1") || streq(arg, "1")) latin1 = LATIN1; else if (streq(arg, "latin-2") || streq(arg, "2")) latin1 = LATIN2; else if (streq(arg, "koi8-r") || streq(arg, "koi")) latin1 = KOI8; else if (streq(arg, "iso8859-7") || streq(arg, "el")) latin1 = GREEK; else fatal("bad charset (not latin-1/2/koi8-r/iso8859-7)"); break; case 10: // format if (streq(arg, "help") || streq(arg, "?") || streq(arg, "list")) exp_help(stdout); out_fmt = arg; fmt = 0; break; case 11: // name fname = arg; break; case 12: // timeout timeout = strtol(arg, 0, 10); if (timeout < 1 || timeout > 999999) fatal("bad timeout value", timeout); break; case 13: // progname progname = arg; break; case 14: // pid txtpid = strtoul(arg, NULL, 0); break; case -1: // non-option arg if (not fmt) fmt = export_open(out_fmt); if (not fmt) fatal("%s", export_errstr()); if (not(req = malloc(sizeof(*req)))) out_of_mem(sizeof(*req)); req->name = fname; req->pgno_str = arg; req->pgno = arg_pgno(arg, &req->subno); req->export = fmt; dl_insert_last(reqs, req->node); break; } if (dl_empty(reqs)) fatal("no pages requested"); // setup device if (not(vbi = vbi_open(vbi_name, 0, fine_tune, newbttv, progname, txtpid))) fatal("cannot open %s", vbi_name); vbi_add_handler(vbi, event, reqs); // register event handler signal(SIGUSR1, sig_handler); signal(SIGALRM, sig_handler); if (timeout) alarm(timeout); // capture pages (moves requests from reqs[0] to reqs[1]) while (not dl_empty(reqs) && not timed_out) if (fdset_select(fds, 30000) == 0) // 30sec select time out { error("no signal."); break; } alarm(0); vbi_del_handler(vbi, event, reqs); vbi_close(vbi); if (not dl_empty(reqs)) error("capture aborted. some pages are missing."); for (req = PTR reqs[1].first; req->node->next; req = PTR req->node->next) { fname = export_mkname(req->export, req->name, req->vtp, req->pgno_str); if (not fname || export(req->export, req->vtp, fname)) error("error saving page %s: %s", req->pgno_str, export_errstr()); if (fname) free(fname); } exit(dl_empty(reqs) ? 0 : 1); } alevt-v1.8.0/alevt-date.1.in000066400000000000000000000050741345074102600155460ustar00rootroot00000000000000.na .TH ALEVT-DATE 1 "VERSION" LINUX "Teletext time" .SH NAME alevt-date \- display/set time received via Teletext .SH SYNOPSIS .B alevt-date .RI [ options ] .SH "DESCRIPTION" .B alevt-date displays the time received from a Teletext source. It can be used to set the system time. The date is not interpreted (not even transmitted on most channels). So it allows only adjustment of +/\-12 hours. The default allowed adjustment is limited to +/\-2 hours (use \-delta to change). Without the \-set option it just displays the date in the format of the .BR date (1) command. .SH OPTIONS A summary of options is included below. .TP 18 .B \-set Set system time from time received via Teletext. .TP .BI \-delta \ seconds Maximum allowed adjustment made to the system time. The default is 7200 seconds (2 hours) and the maximum that may be given is 12 hours. .TP .BI \-format \ string Format string to used to print the time. Look at .BR strftime (3) for possible control sequences. .TP .BI \-vbi \ device Use the given device name. Default: /dev/vbi, /dev/vbi0, /dev/video0, /dev/dvb/adapter0/demux0 tried in this order. .TP .BI \-timeout \ seconds If the time can't be detected in .IR seconds , the program is terminated with a SIGALRM. .TP .BI \-progname \ name Specifies the program name if using the DVB interface. .TP .BI \-pid \ pid Specifies the teletext PID if using the DVB interface. .TP .B \-\-help Show summary of options. .TP .B \-\-version Show version of program. .PP Before starting this program, you have to set the TV channel with another program like .B xawtv of .BR set-tv . .PP Note: This program does .B not set the battery backed up clock of your computer. .I clock -w will do this. The .B \-progname or .B \-pid option specifies the program or teletext PID if using the DVB interface. If neither of these two options is used, alevt outputs informations about the currently accessible streams and uses the first of these PIDs as default. This output contains the PIDs and names that can be used as an input for the .B \-progname or .B \-pid option in the context of the currently chosen TV channel. .SH FILES .I /dev/vbi* .I /dev/dvb/adapter*/demux* .SH SEE ALSO .BR alevt (1x), .BR alevt-cap (1), .BR strftime (3), .BR date (1), .BR clock (8). .SH BUGS This program is just a toy. The time transmitted by the TV stations is more than inaccurate. Some are within a few seconds of your local time reference but others are more then 15 minutes off. You've been warned. (And don't assume the pkt8/30 time is better. It's even worse.) .PP Bug reports to . alevt-v1.8.0/alevt-date.c000066400000000000000000000115331345074102600152200ustar00rootroot00000000000000#include #include #include #include /* to keep glibc 2.2 quiet */ #include #include #include #include "os.h" #include "vt.h" #include "fdset.h" #include "vbi.h" #include "lang.h" #include "misc.h" int debug = 0; char *fmt = "%a %b %d %H:%M:%S %Z %Y"; int max_diff = 2*60*60; // default: 2 hours int set_time = 0; static void chk_time(int t) { struct tm *tm; time_t sys_t; int dt; char buf[256]; if (t < 0 || t > 235959 || t%100 > 59 || t/100%100 > 59) return; sys_t = time(0); tm = localtime(&sys_t); // Now convert to UTC seconds t = t/100/100 * 60*60 + t/100%100 * 60 + t%100; #ifdef BSD t -= tm->tm_gmtoff; // dst already included... #else t += timezone; if (tm->tm_isdst) t -= 60*60; #endif dt = t - sys_t % (24*60*60); if (dt <= -12*60*60) dt += 24*60*60; if (dt <= -max_diff || dt >= max_diff) fatal("time diff too big (%2d:%02d:%02d)", dt/60/60, abs(dt)/60%60, abs(dt)%60); sys_t += dt; if (set_time) { struct timeval tv[1]; tv->tv_sec = sys_t; tv->tv_usec = 500000; if (settimeofday(tv, 0) == -1) ioerror("settimeofday"); } if (*fmt) { tm = localtime(&sys_t); if (strftime(buf, sizeof(buf), fmt, tm)) puts(buf); } exit(0); } static void event(void *_, struct vt_event *ev) { switch (ev->type) { /* vbi may generate EV_PAGE, EV_HEADER, EV_XPACKET */ /* for event arguments see vt.h */ case EV_HEADER: // a new title line (for running headers) { static int last_t = -1; u8 *s = ev->p1; int i, t = 1; if (ev->i2 & PG_OUTOFSEQ) break; for (i = 32; i < 40; ++i) if (s[i] >= '0' && s[i] <= '9') t = t * 10+ s[i] - '0'; if (t >= 1000000 && t <= 1235959) if (t == last_t || t - last_t == 1) chk_time(t - 1000000); /* if (last_t != t) printf("%06d\n", t-1000000); */ last_t = t; break; } } } static void usage(FILE *fp, int exit_val) { fprintf(fp, "usage: %s [options]\n", prgname); fprintf(fp, "\n" " Valid options:\tDefault:\n" " --help\n" " --version\n" " -vbi \n" //" -oldbttv\n" " -set\t\toff\n" " -delta \t7200 (2 hours)\n" " -format \t%%c\n" " -timeout \tnone\n" ); exit(exit_val); } static int option(int argc, char **argv, int *ind, char **arg) { static struct { char *nam, *altnam; int arg; } opts[] = { { "-set", "-s", 0 }, { "-delta", "-d", 1 }, { "-format", "-f", 1 }, { "-vbi", "-dev", 1 }, { "-timeout", "-t", 1 }, { "--version", "-v", 0 }, { "--help", "-h", 0 }, { "-newbttv", "-new", 0 }, { "-oldbttv", "-old", 0 }, { "-progname", "-pn", 1 }, { "-pid", "--pid", 1 }, }; int i; if (*ind >= argc) return 0; *arg = argv[(*ind)++]; for (i = 0; i < NELEM(opts); ++i) if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam)) { if (opts[i].arg) if (*ind < argc) *arg = argv[(*ind)++]; else fatal("option %s requires an argument", *arg); return i+1; } if (**arg == '-') { fatal("%s: invalid option", *arg); usage(stderr, 1); } return -1; } int main(int argc, char **argv) { char *vbi_name = NULL; int timeout = 0; int big_buf = -1; struct vbi *vbi; int opt, ind; char *arg; char *progname = NULL; int txtpid = -1; setprgname(argv[0]); ind = 1; while (opt = option(argc, argv, &ind, &arg)) switch (opt) { case 1: // -set set_time = 1; break; case 2: // -delta max_diff = atoi(arg); if (max_diff < 1) fatal("-delta: illegal value '%s'", arg); if (max_diff > 12*60*60) { max_diff = 12*60*60; error("-delta: %d too big. assuming %d", arg, max_diff); } break; case 3: // -fmt fmt = arg; break; case 4: // -vbi vbi_name = arg; break; case 5: // -timeout timeout = atoi(arg); if (timeout < 1 || timeout > 60*60) fatal("-timeout: illegal value '%s'", arg); break; case 6: // -version printf("AleVT-Date Version "VERSION"\n"); exit(0); case 7: // help usage(stdout, 0); break; case 8: // newbttv big_buf = 1; break; case 9: // oldbttv big_buf = 0; break; case 10: // progname progname = arg; break; case 11: // pid txtpid = strtoul(arg, NULL, 0); break; case -1: usage(stderr, 1); break; } fdset_init(fds); if (timeout) { signal(SIGALRM, SIG_DFL); // kill me alarm(timeout); } vbi = vbi_open(vbi_name, 0, 1, big_buf, progname, txtpid); // open device if (not vbi) fatal_ioerror(vbi_name); vbi_add_handler(vbi, event, 0); // register event handler for (;;) fdset_select(fds, -1); // call scheduler /* never reached */ vbi_del_handler(vbi, event, 0); vbi_close(vbi); exit(0); } alevt-v1.8.0/alevt.1x.in000066400000000000000000000102431345074102600150150ustar00rootroot00000000000000.na .TH ALEVT 1x "VERSION" LINUX "Teletext decoder" .SH NAME alevt \- X11 Teletext browser .SH SYNOPSIS .B alevt .RI [ options ] .SH "DESCRIPTION" .B alevt is an X11 program for browsing and searching Teletext pages received by a compatible decoder (at the moment, bttv). .SH OPTIONS A summary of command line options is included below. The X11 user interface is described in the built-in manual. .TP 4 .BI \-display \ display Where to display the windows. Default: $DISPLAY. .TP .BI \-geometry \ geometry Specifies the size and position of the windows. Default: 41x25. .TP .BI \-vbi \ device Use the given device name. Default: /dev/vbi, /dev/vbi0, /dev/video0, /dev/dvb/adapter0/demux0 tried in this order. .TP .BI \-finetune \ \-4..4\||auto Try some fine tuning if you have a lot of decoding errors (these lightning symbols). This allows fine tuning of the decoder circuit. The pre finetune behaviour was \-finetune 0. Default: 1. .TP .BI [\-parent] \ ppp[.ss] Open a new window with the page number given by .I ppp and an optional subpage index given by .IR ss . The .B \-parent keyword is just for completeness and not normally used. The page number alone is sufficient. Default: 900. .TP .BI \-child \ ppp[.ss] Open a new child window with the page number given by .I ppp and an optional subpage index given by .IR ss . About the concept of parent and child windows see the built-in manual. .TP .\" .B \-oldbttv .\" Give this option if you are using the bttv driver from the 2.2 kernel .\" or a very old one (<0.5.20) from the .\" .B xawtv .\" package. .\" .TP .BR \-erc / \-noerc Enables/disables the error reduction code which substitutes errors on a page by data from a previously received one. Enabled by default. .TP .BR \-bell / \-nobell Enables/disables the error bell. Normally enabled. .TP .BI \-charset \ latin-1\||latin-2\||koi8-r\||iso8859-7 Selects the character set to use. Characters not present in the selected set are replaced by similar looking symbols. (default: latin-1) .TP .BI \-progname \ name Specifies the program name if using the DVB interface. .TP .BI \-pid \ pid Specifies the teletext PID if using the DVB interface. .TP .B \-\-help Show summary of options. .TP .B \-\-version Show version of program. .PP The order of options is important! Each page number opens a new window with the previously given geometry, device, and display. For example, to open two windows on the local display and one on display foo:0 you would start it with: .IP .I alevt 100 300 \-display foo:0 100 .PP Or, one window from /dev/vbi0 and one from /dev/vbi1 (untested *g*): .IP .I alevt \-vbi /dev/vbi0 100 \-vbi /dev/vbi1 100 .PP The .B \-child options requires a parent window. So, it must be preceded by a parent or another child window. .PP When saving pages .B alevt asks for a format string. Look at .BR alevt-cap (1). The chapter .B Format Specifiers gives an explanation. .PP .B alevt has no support to set or change the TV channel. This should be done with another (not supplied) program like .B xawtv or .B set-tv from the .B xawtv package. Maybe in the future there will be a more sophisticated method in bttv to switch channels etc with a dedicated tuner application. But, at the moment, you have to live with it... The .B \-progname or .B \-pid option specifies the program or teletext PID if using the DVB interface. If neither of these two options is used, alevt outputs informations about the currently accessible streams and uses the first of these PIDs as default. This output contains the PIDs and names that can be used as an input for the .B \-progname or .B \-pid option in the context of the currently chosen TV channel. .SH FILES .I /dev/vbi* .I /dev/dvb/adapter*/demux* .SH EXAMPLES Select the teletext stream by the PID hex value: .IP .I alevt \-vbi /dev/dvb/adapter0/demux0 \-pid 0x0237 .PP Select the teletext stream by the PID decimal value: .IP .I alevt \-vbi /dev/dvb/adapter0/demux0 \-pid 567 .PP Select the teletext stream by the program name: .IP .I alevt \-vbi /dev/dvb/adapter0/demux0 \-progname \'kabel eins\' .PP .SH "SEE ALSO" .BR alevt-date (1), .BR alevt-cap (1), .BR X (3x), .BR xawtv (1x), and the built-in manual. .SH BUGS Bug reports to . alevt-v1.8.0/alevt.lsm.in000066400000000000000000000007271345074102600152660ustar00rootroot00000000000000Begin3 Title: AleVT Version: VERSION Entered-date: 03Dez07 Description: Teletext decoder/browser for bttv. Keywords: videotext teletext bttv v4l x11 fasttext Author: froese@gmx.de (Edgar Toernig) Primary-site: goron.de ~froese/alevt 133k alevt-VERSION.tar.gz Alternate-site: metalab.unc.edu pub/Linux/apps/video 133k alevt-VERSION.tar.gz Platforms: X11, bttv-driver, gcc Copying-policy: GPLv2 End alevt-v1.8.0/alevt.spec000066400000000000000000000030621345074102600150130ustar00rootroot00000000000000%define Name alevt %define Version 1.6.3 %define Release 3 %define DocVersion 1.6.3 %define Prefix /usr %define ExecPrefix /usr/X11R6 %define LocaleDir /usr/share/locale Summary: Videotext/Teletext Summary(de): Videotext/Teletext Name: %{Name} Version: %{Version} Release: %{Release}%{LibC} Copyright: GPL Group: X11/Utilities Source: http://goron.de/~froese/%{Name}/%{Name}-%{Version}.tar.gz BuildRoot: /tmp/%{Name}-%{Version}-root URL: http://goron.de/~froese #Packager: Mario Mikocevic (Mozgy) %changelog * Mon Jun 14 1999 Karsten Hopp - removed old patch from specfile - removed LibC-Macro - added '-oldbttv' to the package description. * Sun May 23 1999 Karsten Hopp - several minor patches of Marios spec-file: german descriptions buildroot (patched Makefile) some changed install-paths %description Teletext decoder and browser for the bttv driver. %description -l de X11 Videotextdecoder fόr den bttv Treiber. %prep %setup %build make %install mkdir -p $RPM_BUILD_ROOT/%{ExecPrefix}/{bin,man/man1} make rpm-install gzip -9qnf README CHANGELOG COPYRIGHT $RPM_BUILD_ROOT/%{ExecPrefix}/man/man1/* %files %attr(- ,root,root) %doc README.gz CHANGELOG.gz COPYRIGHT.gz %attr(0755,root,root) %{ExecPrefix}/bin/alevt %attr(0755,root,root) %{ExecPrefix}/bin/alevt-date %attr(0755,root,root) %{ExecPrefix}/bin/alevt-cap %attr(0644,root,root) %doc %{ExecPrefix}/man/man1/alevt.1x.gz %attr(0644,root,root) %doc %{ExecPrefix}/man/man1/alevt-date.1.gz %attr(0644,root,root) %doc %{ExecPrefix}/man/man1/alevt-cap.1.gz alevt-v1.8.0/alevt.spec.in000066400000000000000000000030661345074102600154240ustar00rootroot00000000000000%define Name alevt %define Version VERSION %define Release 3 %define DocVersion VERSION %define Prefix /usr %define ExecPrefix /usr/X11R6 %define LocaleDir /usr/share/locale Summary: Videotext/Teletext Summary(de): Videotext/Teletext Name: %{Name} Version: %{Version} Release: %{Release}%{LibC} Copyright: GPL Group: X11/Utilities Source: http://goron.de/~froese/%{Name}/%{Name}-%{Version}.tar.gz BuildRoot: /tmp/%{Name}-%{Version}-root URL: http://goron.de/~froese #Packager: Mario Mikocevic (Mozgy) %changelog * Mon Jun 14 1999 Karsten Hopp - removed old patch from specfile - removed LibC-Macro - added '-oldbttv' to the package description. * Sun May 23 1999 Karsten Hopp - several minor patches of Marios spec-file: german descriptions buildroot (patched Makefile) some changed install-paths %description Teletext decoder and browser for the bttv driver. %description -l de X11 Videotextdecoder fόr den bttv Treiber. %prep %setup %build make %install mkdir -p $RPM_BUILD_ROOT/%{ExecPrefix}/{bin,man/man1} make rpm-install gzip -9qnf README CHANGELOG COPYRIGHT $RPM_BUILD_ROOT/%{ExecPrefix}/man/man1/* %files %attr(- ,root,root) %doc README.gz CHANGELOG.gz COPYRIGHT.gz %attr(0755,root,root) %{ExecPrefix}/bin/alevt %attr(0755,root,root) %{ExecPrefix}/bin/alevt-date %attr(0755,root,root) %{ExecPrefix}/bin/alevt-cap %attr(0644,root,root) %doc %{ExecPrefix}/man/man1/alevt.1x.gz %attr(0644,root,root) %doc %{ExecPrefix}/man/man1/alevt-date.1.gz %attr(0644,root,root) %doc %{ExecPrefix}/man/man1/alevt-cap.1.gz alevt-v1.8.0/bdf2xbm.c000066400000000000000000000075071345074102600145240ustar00rootroot00000000000000/* Simple program to convert a bdf-font to a bitmap. The characters are arranged in a 32x8 matrix. usage: bdf2xbm [identifier] xbm Copyright 1998,1999 by E. Toernig (froese@gmx.de) */ #include #include #include #include #include #define not ! #define streq(a,b) (strcmp((a),(b)) == 0) int lineno; char *word[64]; int nword; char *font = "font%dx%d"; int w, h, bpl; unsigned char *bmap; static void error(char *fmt, ...) { va_list args; va_start(args, fmt); fprintf(stderr, "bdf2xbm"); if (lineno) fprintf(stderr, ":%d", lineno); fprintf(stderr, ": "); vfprintf(stderr, fmt, args); fputc('\n', stderr); exit(1); } static int nextline() { static char buf[256]; char *p; int i; do { nword = 0; if (fgets(buf, sizeof(buf), stdin) == 0) return nword; lineno++; p = buf; for (;;) { while (isspace(*p)) p++; if (*p == 0) break; word[nword++] = p; while (*p && not isspace(*p)) *p = toupper(*p), p++; if (*p == 0) break; *p++ = 0; } } while (nword == 0); for (i = nword; i < 64; ++i) word[i] = ""; return nword; } static inline void setbit(int ch, int x, int y) { int yo = ch / 32 * h + y; int xo = ch % 32 * w + x; bmap[yo * bpl + xo / 8] |= 1 << (xo % 8); } static void dobitmap(int ch, int x, int y) { int i, j; for (i = 0; i < y; ++i) { nextline(); if (nword > 1 || strlen(word[0]) != (x + 7) / 8 * 2) error("bad BITMAP"); for (j = 0; j < x; ++j) { int c = word[0][j / 4]; if (c >= '0' && c <= '9') c -= '0'; else if (c >= 'A' && c <= 'F') c -= 'A' - 10; else error("bad hexchar in BITMAP"); if (c & (8 >> (j % 4))) setbit(ch, j, i); } } } static void dochar() { int ch = -1, x = -1, y = -1; while (nextline()) { if (streq(word[0], "ENDCHAR")) return; else if (streq(word[0], "ENCODING") && nword == 2) { ch = atoi(word[1]); if (ch < 0 || ch > 255) error("bad character code %d", ch); } else if (streq(word[0], "BBX") && nword == 5) { x = atoi(word[1]), y = atoi(word[2]); if (x < 1 || x > 64 || y < 1 || y > 64) error("bad BBX (%dx%d)", x, y); } else if (streq(word[0], "BITMAP")) { if (x < 0) error("missing BBX"); if (ch < 0) error("missing ENDCODING"); dobitmap(ch, x, y); } } error("unexpected EOF (missing ENDCHAR)"); } static void dofile() { lineno = 0; w = h = 0; bmap = 0; nextline(); if (nword != 2 || not streq(word[0], "STARTFONT")) error("not a bdf-file"); while (nextline()) { if (streq(word[0], "ENDFONT")) return; else if (streq(word[0], "FONTBOUNDINGBOX") && nword == 5) { if (bmap) error("multiple FONTBOUNDINGBOXes!?!"); w = atoi(word[1]), h = atoi(word[2]); if (w < 1 || w > 64 || h < 1 || h > 64) error("bad bounding box %dx%d\n", w, h); bpl = (w*32+7)/8; // rounding is unnecessary bmap = calloc(1, bpl * h*8); if (bmap == 0) error("out of memory"); // fprintf(stderr, "%dx%d font\n", w, h); } else if (streq(word[0], "STARTCHAR")) { if (not bmap) error("no FONTBOUNDINGBOX"); dochar(); } } error("unexpected EOF (missing ENDFONT)"); } static void writexbm() { char buf[256]; int i, j; unsigned char *p = bmap; if (not bmap) return; sprintf(buf, font, w, h); printf("#define %s_width %d\n", buf, 32 * w); printf("#define %s_height %d\n", buf, 8 * h); printf("static unsigned char %s_bits[] = {\n", buf); for (i = 0; i < 16 * h * w / 8; ++i) { //printf(" "); for (j = 0; j < 16; ++j) printf("0x%02x,", *p++); printf("\n"); } printf("};\n"); } int main(int argc, char **argv) { if (argc > 1) font = argv[1]; dofile(); writexbm(); exit(0); } alevt-v1.8.0/cache.c000066400000000000000000000115111345074102600142310ustar00rootroot00000000000000#include #include #include "misc.h" #include "dllist.h" #include "cache.h" #include "help.h" /* There are some subtleties in this cache. - Simple hash is used. - All subpages of a page are in the same hash chain. - The newest subpage is at the front. Hmm... maybe a tree would be better... */ //static struct cache_ops cops; static inline int hash(int pgno) { // very simple... return pgno % HASH_SIZE; } static void do_erc(struct vt_page *ovtp, struct vt_page *nvtp) { int l, c; if (nvtp->errors == 0 && ovtp->lines == nvtp->lines) return; for (l = 0; l < H; ++l) { if (~nvtp->lines & (1 << l)) memcpy(nvtp->data[l], ovtp->data[l], W); else if (ovtp->lines & (1 << l)) for (c = 0; c < W; ++c) if (nvtp->data[l][c] == BAD_CHAR) nvtp->data[l][c] = ovtp->data[l][c]; } nvtp->lines |= ovtp->lines; } static void cache_close(struct cache *ca) { struct cache_page *cp; int i; for (i = 0; i < HASH_SIZE; ++i) while (not dl_empty(ca->hash + i)) { cp = PTR ca->hash[i].first; dl_remove(cp->node); free(cp); } free(ca); } static void cache_reset(struct cache *ca) { struct cache_page *cp, *cpn; int i; for (i = 0; i < HASH_SIZE; ++i) for (cp = PTR ca->hash[i].first; cpn = PTR cp->node->next; cp = cpn) if (cp->page->pgno / 256 != 9) // don't remove help pages { dl_remove(cp->node); free(cp); ca->npages--; } memset(ca->hi_subno, 0, sizeof(ca->hi_subno[0]) * 0x900); } /* Get a page from the cache. If subno is SUB_ANY, the newest subpage of that page is returned */ static struct vt_page * cache_get(struct cache *ca, int pgno, int subno) { struct cache_page *cp; int h = hash(pgno); for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next) if (cp->page->pgno == pgno) if (subno == ANY_SUB || cp->page->subno == subno) { // found, move to front (make it 'new') dl_insert_first(ca->hash + h, dl_remove(cp->node)); return cp->page; } return 0; } /* Put a page in the cache. If it's already there, it is updated. */ static struct vt_page * cache_put(struct cache *ca, struct vt_page *vtp) { struct cache_page *cp; int h = hash(vtp->pgno); for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next) if (cp->page->pgno == vtp->pgno && cp->page->subno == vtp->subno) break; if (cp->node->next) { // move to front. dl_insert_first(ca->hash + h, dl_remove(cp->node)); if (ca->erc) do_erc(cp->page, vtp); } else { cp = malloc(sizeof(*cp)); if (cp == 0) return 0; if (vtp->subno >= ca->hi_subno[vtp->pgno]) ca->hi_subno[vtp->pgno] = vtp->subno + 1; ca->npages++; dl_insert_first(ca->hash + h, cp->node); } *cp->page = *vtp; return cp->page; } ///////////////////////////////// // this is for browsing the cache ///////////////////////////////// /* Same as cache_get but doesn't make the found entry new */ static struct vt_page * cache_lookup(struct cache *ca, int pgno, int subno) { struct cache_page *cp; int h = hash(pgno); for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next) if (cp->page->pgno == pgno) if (subno == ANY_SUB || cp->page->subno == subno) return cp->page; return 0; } static struct vt_page * cache_foreach_pg(struct cache *ca, int pgno, int subno, int dir, int (*func)(), void *data) { struct vt_page *vtp, *s_vtp = 0; if (ca->npages == 0) return 0; if (vtp = cache_lookup(ca, pgno, subno)) subno = vtp->subno; else if (subno == ANY_SUB) subno = dir < 0 ? 0 : 0xffff; for (;;) { subno += dir; while (subno < 0 || subno >= ca->hi_subno[pgno]) { pgno += dir; if (pgno < 0x100) pgno = 0x9ff; if (pgno > 0x9ff) pgno = 0x100; subno = dir < 0 ? ca->hi_subno[pgno] - 1 : 0; } if (vtp = cache_lookup(ca, pgno, subno)) { if (s_vtp == vtp) return 0; if (s_vtp == 0) s_vtp = vtp; if (func(data, vtp)) return vtp; } } } static int cache_mode(struct cache *ca, int mode, int arg) { int res = -1; switch (mode) { case CACHE_MODE_ERC: res = ca->erc; ca->erc = arg ? 1 : 0; break; } return res; } static struct cache_ops cops = { cache_close, cache_get, cache_put, cache_reset, cache_foreach_pg, cache_mode, }; struct cache * cache_open(void) { struct cache *ca; struct vt_page *vtp; int i; if (not(ca = malloc(sizeof(*ca)))) goto fail1; for (i = 0; i < HASH_SIZE; ++i) dl_init(ca->hash + i); memset(ca->hi_subno, 0, sizeof(ca->hi_subno)); ca->erc = 1; ca->npages = 0; ca->op = &cops; for (vtp = help_pages; vtp < help_pages + nr_help_pages; vtp++) cache_put(ca, vtp); return ca; fail2: free(ca); fail1: return 0; } alevt-v1.8.0/cache.h000066400000000000000000000015571345074102600142470ustar00rootroot00000000000000#ifndef CACHE_H #define CACHE_H #include "vt.h" #include "misc.h" #include "dllist.h" #define HASH_SIZE 113 struct cache { struct dl_head hash[HASH_SIZE]; int erc; // error reduction circuit on int npages; u16 hi_subno[0x9ff + 1]; // 0:pg not in cache, 1-3f80:highest subno + 1 struct cache_ops *op; }; struct cache_page { struct dl_node node[1]; struct vt_page page[1]; }; struct cache_ops { void (*close)(struct cache *ca); struct vt_page *(*get)(struct cache *ca, int pgno, int subno); struct vt_page *(*put)(struct cache *ca, struct vt_page *vtp); void (*reset)(struct cache *ca); struct vt_page *(*foreach_pg)(struct cache *ca, int pgno, int subno, int dir, int (*func)(), void *data); int (*mode)(struct cache *ca, int mode, int arg); }; struct cache *cache_open(void); #define CACHE_MODE_ERC 1 #endif alevt-v1.8.0/contrib/000077500000000000000000000000001345074102600144635ustar00rootroot00000000000000alevt-v1.8.0/contrib/alevt-1.6.1.rus+greek.diff.gz000066400000000000000000000323601345074102600214150ustar00rootroot00000000000000‹§x?alevt-1.6.1.rus+greek.diffμ[λwΗu όW΄#Ψ]ΌA–’²bYR)ΖqJ²μX<"ΌΌ» ΐHκίΥύβ6iΪ΄IΣ“¶§9‡²LΣ2I±EΚjrdά{g/.(OΪsβΗbχ·sοωΝ;wf‡¥ZΉ ΚΝFέ\w-’h‘–U«D?0ξεZέ~ΣύΆLριSΤΆ§AKgΥd6‘¨ξ?Rcκ…B‡…u5‹ςZβ„πεΛ θZ8!Ύ^Ύμ½Ρ,ϊΑ/”fανΐ­«ίΏτ+Ύ·ω|o/]”–(ΚhΗ¶ΆiΪb2Z―@©γ=–›θφλWQCθ5ΙψI¥nE•’αTΫ%Q]7¶4jΛ‹φgΒl?]©ύβmΡh“²όeω1eX|΄RJΉΥt"­,Π―ι|§ΣxiΧ~bF ψΚΛlƒR…©·JΨMsΚ« δό΅SLς]¬g+΅ΧTΓ[θ¬Uσ©.v\_, …RY§onέ\ *uΓ©5Ρ£Gφ#Qχ=‹ΐ%bB9«γneΒIαUΣΉ_ϋ5›dLχ4¦ΣΖDg 26{έι:ΚέV-ΝZCcZcpi¤€Π }q}5»•N'2JΚSi\*)%4ΛΎσ»κϊz#ΕΎs+·@±89·|ΐ&£Ι”N‹@QkΪQ―ƒ5‹΅ΡΊΎ·ο/ήώ`νκ®ί[[ΌukιαΠ0nMϊ_›$Ογ2Ά};8ΟBAΗ•‘1«V6jΝ"ZΥm7€ΕkΝb½S2IM΄]λ6¶όπΝ §ZkV `Φ[χοm¨γπόύqΗv°,hΘσ¥Ε,Φ·ξ/M<M£Τ0―-Dxτ<ά·>-“RUΓ@Υ³Δέcςθ χ' θz6Λjη䡆ρI λμDAQrβνν=ΩίΩέ„­ΐ•σ.α`ω9<;<8ϊςΣέ' ‹|³¶vφ·αψπΰώ»σΝώqο9Ι΄ §Xi£Υ±#LΨ³ƒπΩαγ£ένγm8Β²_mξnοψC²χλέκXEΣΤυbX ΥοWΫ»;ϋ΅4 ?;|µuΨ{ϊ΄OρωΙ><λn>έΖ ••T±jX¶ι@„ρΛ'^EΜ:?=x±·½σθ9ΧφΡΛƒϋ°ίƒ­Ηϋx—υ‡~ΡΫϋϊxϋπΰ9½άώ|§wττΥs®*Yΰ¬ΑcDϋC;πΙΦΦήΞξΑcxΩ;μνzΈύμl~A6zϋPhΥKp„ΤΌ|tτ„[uπβΉΛψΑΧΟa··/mr­ό΅έM$›Ώ³{ΈI=τΩή“§½γΝέ^_Έbνj­tΤ.Ί•ΆvµrΪω·{Ϋ[/±²«Ρ|οΩ6ΩόΕφεύξθx^νaΝρΏAIψοΠ0Κ~ω©"z>;xςε§GxυφΎ!π)²‚}υΚ?y½½½ήΦ#ΑυΎ]'μ†}yΓ¨¶Z‘ε}²ά&T½»ΉbΫ»ΗΫΗ½§φ·βΤ/ocuΏ:8<ψzΠgϊ~ϋeyxτLTκxηyί>2η΅Q$ϊΕΊΝWz\dm ½i;ΰ†ύrϋφξ&τ_n?–Ez‡―φ©µΨ¤g‡ΫΡ¨ΝΓ UΗig£ΡJ+β΄Ά²eQv0?%³©: φ―ίμφ?{΄‡|όΊ·ίΫΪω©9- …ΗH­92τG_yΗ–Ρ2ηJOOU΅'³1ο$5΅Ή‡―4χ8UΪV ²ia ΖYΓ†{5§ f·ζ†W§cƒFίƒm¬cdrFέΒ(·X§c™% 2Σ,αKΜhNF88-ΈgΤ8l›λ¦ρCdι¶_‰\½+ύaΎ2Yyπ@ζώΠk‹ΰΝόε‡;fέ,:6Χ$"ΧεΠ~Η6±^y¶΅Ωr°έ¦m6DXΚf Ψ2,0=«E `ΧµΊaA½ΥΊKs“½Ρΐΐ`cc²©Y·zΑ³9NqBw_η2Εoι/£ς™¬ΟΖTOgΡΒ ”’μ*oΙ.ΩN©ΦTsc., ΐz«fΗKΦ*M£>v5Τΐ XK¨qΚ:u5!•ώ±«St°[>†iΌΜ ¥ϊZέ‘ήΪΛϊκ/¥Nkcθ§δΊMΨΠ*S‘Iχ]ίµ)ωde¦#* ωµόnΟ‡aj*θΪ2¶…ΥoΓ¬/««τFΌ+—πνf:NoηvΔ“ε…τxΪM}>*Μ®ΆΑ,h3™uΣ›2°1ζΗ¤­J Βƒ0ό΅ΰ Eκ ¦OήΔ9©qΣτώ­λιΙΚϊSθI}fέKέµΕωωχϋ­Δ%Ώ.·¦ ΨcξψΠ ”c(‰τΠ GE£ύΚ±4,`ΊKw¤¦h`{45K®Α¨a8TdΌU³ή>Ω¶wOBδOΤΰΧvΜδ=η2ΪEΡ9ΫhχΟdΥLVΟxφ¤NS_ΙQ#W1ψb^‡(ή4[tλ‡ω¦Q¨›v΄T³ω†C§iY“S ³7‰Ϊz}L.ZϊNώƒύΎώϋΝn[©”»c‘Ώz{BυΉΆώ$ιΙ Βψ. Em 9χ)Ρc7Ό1γW:Mζ¦–Σ`[ΕYΘ‘®ΨcX+Τ°gΔΎΞ4®O½qeιϊΝΣUΘ”0―ugΧΊΣω‚³kΣωχdδx]ΟP*θΡ5ά7βύΉ;ΗCgδXV0#kM$!ϊΥυώΜψή7Φnή µymξ,-^Ώ}{~nήΈ ”ΫΗL]jΑ©±‚am}ve*ΜβpP–6ΪζΚ―Ϋρ_8fΧ‰Rg¦Βεv;YHs9Pn‡§δ`Εα¨πxό^ie*7Έ†]§E―γΉe±*ίΡ¥BΆrEΏgO7 ‘ώΰ ΘΨ~B^Ό>Y¦>oiu&Kς,χΓ)ρ‡cθΡS”n`W\›Ώ9ΏxeιΦβHυΣ:&»hΜ#Δ¬λκTO(Ξ»o‚™7μΔ Zή¨+Gu£C'Tβ,έϊ–ΩΔπ3ή½”°Ί½ζ`x'ϊ|Αe\4z,«Ζ²1}B£T_}ΉΝ‹ΏZΆΣp—pXql@¥ή*u%πSύ=γ©qThhyΆq‰βΏ§DknZυdk«§X=?‰ΥρθΘΖR$ςNyFnλϊqωFst¦Ρ–WgN)£χΛ„&–‰΅L|`kΠ±τbν^­δT}Ά>|?φΎjΦ*UG§υJέhVΖζOyχxw®^ε­UW±ΪΧ“k'N¬bqdWΖV¬EgΐΡµιT£f#ΥΏΖάzΰ*!Δφβ ›C®ύ΄TΝ®·j%?…νuCg “†ιv³•¦ψ!cq¬&¤ΜέδΪξ$¦¤sίΡKZΕΈ1{V¬α‚pρ"kΥt Υ4­mΧ& ^Φx―J{£¦Ά ΗςΩιφ BρX+³³jW+Ι"Ύ€?3¤nώN^ΞΈ SΪΆ]ω²BϋAlΙΥΔµ„½†Α7P ™”ο(5§ΦαJ+PΔεΉΪ5Τ \ΐΖvuu΄Έ¨Υ$(x¥€hg†Κ<μίγέ`9+U›ΘR¥’•ΚZΕ;—ΣνPH¨#Eψ@Γ€i'†©NHίΓΥa©™®X¦yχΞµΠϊέ’WVr_ΜCό ΰ>}µ*Σ΅YY£p·\DΣνUΪΑQδ;[Ce}ΞΐmL·ΡFίΆ½L·muy¨«l}Βx²‚…xa*Π°η‹wωΫΧ5b_δ! @Σ4KθbΧjπA…²δ3ϊ~ΐ›|_„ ς£ή®X½X…΄~b™Ng;C>PΥΩH=ά`βY@Κβx5hΰΏq%¨ ‹w.Ύ«r«ηΰJV-΄τ9»,.όk-χ8‡1ƒC±[\¦΅θ&»"A¤NE—Wg±OνΞcμΕ«ΖW―1ΎΖωΰk’―)Ύ¦ω ι+όt•―yΎΞρu― t]` la-,Δ„τΫX` lcm,°!ΝΨΒ[X“lc!CΧ<ΫΘ³<ΫΘs+ςl!Οςl!y¶‘l#Ο6ςl#Ο­Θ³…<Χc-ΜiBzmΜ±9¶1Η6ζΨΖ·b-Μ±…9¶0wUJ³9¶1Η6ζd®=A‹fρƒ ΊU†p\ε(—θ1UF7›nΟ•γAτc*»:ΆDx—η·ο°·ϋΪ`δMv71½ύ Υ:ώ³Λύu99±Oθ2μN .³+)ΉίOGΥnQ 3¬Γ‚5%χ Γ€cp•`]Ιύ=ΓΊ€γ'8¦δώα€0Gp\Ιύ”αΈ€“0OpBΙύα„€S°@pRΙύ#ΓI§αΑ)%χs†SΞΐ{§•ά?1fXSqpFΙύ3Γkπ}‚ %χ † λπ>Α%χ/ ƒ•άΏ2\p> Έ¤δ~ΙpIΐ ΈI°©δ~Ε°)ΰ$ά"Έ¬δώα²€Spαςύk‚K‚o- A0ςύο Ύµ ,|ΏKpBπ­«p‡`δϋ7\Zπ­k°D0ςύ Ύ1ΛΑΘχ2,ψΦcπ!ΑΘχ1,ψΦγπC‚‘ο— Ύυ|D0ςύί Ύυ$ό`δϋ· Ύυό%Α†[oΑ7.– .Έ°ΰϋ®VGΒ7Y‹ όBL…UΒ‘ρG—$®Α_”ΚΈ)qΦGΞ3.8Εΰ―NlR•Εγ`¤χ75‰' @8²ώγΊΔ“!΄o1“x J„#ο3—xLΒ‘ψmΖΟ@™pdώ Ζσβ*TGκ0’ΈUΒ‘ϋ/OK\‡αHώγ‰ΗΰΗ„#ϋ»Γ]Β‘ώ=Ζ%ύρΤ Gϊ2.ι'΅A8ΏΟΈ¤?‚&αH0.ι§΅E8ΐxYβhΣ΄…ό?#Ό,ωO¨π1αΘ!γ’„αΘsΖ% lΒ‘#Ζ%‰8„#ΗKώqθόΏ`\ςHΐ:αΘWKώIΈGΈλϊeΙ"]Β‘e\ςHΓαΘοό'2π‚‘ώίθ0Ν«ύƒΰPlMΈτΒχξ(HΙnHjY¦°^±:Ω Iέπ5γ²’1ψΒ±Ύa\tC2ρ’W}™Sτ™o“|)Γ3ύ VnΠWε5³Y5E3 ?xΛG6«A±οψ¤¦—ΫxBΦ(•N{¥b G:tpO;Ό ςχΑ/iΩbV•\Σµ’i-Βf£ΨήΠ[Ηµq9$$pΔ‰Χ γήΣiΥV9€κέOγjΞ Ηiy`Ψη»ο~Υ_jYFεN–Υjΐ5–T†~FΙ‚KR‘W«uoί£ΓΥΎώrNξQΣGδ1ΜύΐΔ_Ρ}Ύu§­δJ†c,£ΥeΤ»«²ή0ΪkB`™ή*1»ΕµΐΫκ΅΅‡“ϊυ³κΧ‡τ“D«υID"ΣΖ9Qy‰ΕvJ5£hΥ01κΠ0¬»ς{^’iN©}}2νξς¦ΰ=΄E)V­)PrL§¨nAA­oWίDRI%IΆF΅J2ΩEwuK:}}.}§ι­SΧι¶Θ›wD™‡―έΞ¬άw¬²Y=Χ·zΡL6Μκ1οΟτ4Θ“aLΌFv™Ε"‘Frwrε—Tm ΡA ΄T‡Ψΰ™·΄ N1`4`ψέΝή¶”‘€OΪΠΦ¤->Ά#J‡|ZQ(ΫΆTqm°=NαIμ¥π΅z¤―W Ώ~§tF¬¬`|?‚/Έfϊ6_MέJΌiδδ2sS5Zsl\@ήN%ήΛ©iΧ' cΫύ(­z©ΰ8λ+Ξ ­&z€Kj$ΡΥΰJsJ…—›­UΣ*RαG:ρ*CηSNR† ΉOϊ稬{Λ†N+{β ¨¬ΛHµnY%ΣΆ’µF»e9FΣΉ0o«b?·ΩiLkDΆΥ6›6¦ΦMσ†όf©uOD~qΣ\―µ:v}ƒDΈS“:ΉdL9wθ¶ΪyoIξ4ςl2mX“ΐ…Ξ{NOSΈ ι1-¬%δ$δq2+Ν'³$±^G³$'biSb‚?Z7~MDΓσΉS<ά4 ω(ήΩβιάα%³Π©P Ύ΅ύοS"θz΅6@ρόκ\αΣKrς™)-Γ§ι'9e)―†– ΄Cz.–S;…΅!sΉnTlW.6,?»\|X.9,η~0βΩΕ-Λ”²”&ηΒV+Ή6YΐΎr\›άΎ¶φΑ•kwζ―_ΉΑΙ]³ΝfiΚ‘`a(hA·«=JZ™Ι2"EUωΜ™ ΎρΙBΐ;Θε Δϊ«wQζΊZo¤ΓΣƒ33#’νJ³Ε‰b§Πq B“£eO.ΐΎ ρ\0Θ‹±X9U‘Σƒ(Ν{f1«+ρ}%ΉΆ­$Vb+©©e¤«–XE%ƒƒ3*d±¶3rΦxsCΗΰ\UΓu]3KέΞΚ^―ΜR«θ}QπΪ~Q|w΅θξΑe;τΈ{&Δ«WB³tςsT/¶f½\Ίν»K€[jΩ΅Δq}1`¦ίBΉ¤,2xT΄–θ—|ύαΏSΤRΌόΕιEξαΜ~nfΗΖόΤΰ“,8 fΣΑeUΏ€λ«ΒMη?\ϋθφ•όϋσKav£05'LMΖ»~ΗF£β¦πυμχJ0ΖZΒΠΙ zZ°;ω7K#Aκδ2z‡ΑεΞυ7mjF`h`ΘΏnK¤’βοΫξ,]Y\Ά?ώ†οΔώ΅Ί«mΫF­_Ας—έ=ρBτΦήy†Γ‘§,kt’uruεr,9Q­_R¶ΝέΥύχγ ι°{@P$nR®ΔyΡΣΝf?Π}S™½ΏΎΊως~φiφa·xV¥336ΣΩφί›YΦ›«ΗΝΫ›7³κ[.Φ?”•Χι¬ϊWηbσβtΉ>=^l^&ωvVYgσΧΟΞ7gεωεΊΌHX¥λΩf}zωώκ·υΛς¤ωM=8//6'/.Χ›ΣW/w_.|ϋ_{5Ώ(ΚJΖ›ί—e}΅ϊ“σοΚσωqωκολεεΣ$―ώΰEεY΄δ~Qε•―^>_,WεςΥϊtµIξ—W7ΫaΤ.µϋν}eθκYεΎχSέίήκ—ςtΩqτ x:?Ώ¨XΪ¨Έύ}Ηιφ­ΕfkdϋbΒ(™n]6 ¶?/ΘR‹υεσωΩΡƒνν)+E¶`χq3€›ωΰ^νΎέ%£αζ7χ²χΚ¤=ςφ^φήαsΙhΈ΅Λπώ½ ΙφΞΒϋw4άΠΏUx>½ux†ϊ·‰Ώϋ£Ν€gw€½σρ;nθί,ΐapΖ"DπXΐ΅‡3!„χ?Έ,."ΔπXΐ‘ΛAό Ο"DρXΐ‘«iπ~Bbq=MξωΈ™&§[<&χ}§Σ¤βd‹s6M.NφqΞ§IΖιΣdγt—Σ¤γt‹gΣδγtWΣδγt‹λiςqΊ›iςqΊΕσiςq²‹t|lqΑ¦ΙΗ½€ drώ‹ ‘ *rf¶Rϋ²Ύ%|?Ό2Ή„Θ δ©ΤΎδ2®Ν3< γ-BµR―φ―Έ®E® r?ϊάωC-EΉ³ωnΥ„b;™¶ΧλΥµ”Ά}gσ*ψ!Θ5D®C>΅ ς­jQ5ΟBΪΎZk1Φζ"'(+φ} Ή²Ψα,»ϊΥ±Θs<χG.,©βFE‰¦θƒOΛϊe δC%£"οΐΣ+΅c‘C•8΄ρδΆΞ½Ϊ•Άz δP)Β#‡,©Λ΅Ό99δP)—·Ψω€‰r¨Μβ"―y3Tl*^Ό%d\r¨ Κ΅)οβΠ”^6‡*Ι γF!ZΉ\΄^‡‘g,rΘ΅2”Χ‘Δt?‰¶¬cΞHδδΠΜ΅0Wβ'υ;ϋ\r΄‚E@Ύ“ΜΚrS;Λ‰rhFηΠΪΒe‹V€°±­²¤—Ν!‡fd­±©t_κ6‡Ι@ωΉΉέ9δΠ, dsΛ¶φsκ G94S!PΫam94ΣΡ―Ίύ<υgΆ rh΄Ϋο Γs]rΘ΅Y> r―,WAU΅&A{y³cΔηS)RC εΪ9I–29Z’hz‡mχb,rΘ΅J„-mGύ­π®Z(Θ΅*Π8΄#6®,YZUΗ‘Θ!‡*ϊ8ΤμΧθ ~Θ°¶‹r¨"shύτ aIΧuα=²PC™C@«Π’µοd^Θ!‡*2‡jXΛ¤j?59δP•‡ΙTµU%3’ " lξ5ΣCuz@δ@j,W£Eζ,²[±¥ρσ¥rΘ΅Μ΅®Χ½ΆΆ†EJ3γ¤W~®!‡j:‡ΊFχ@vΜy!‡ιγPGάC³VΜΤ^ή9TΣ9tπ =*BΥd­λ¥nηVjiΧBm99δPmΒΔ–ϊξλ*µΤ!c δPΗϋχK―,Χ mCiδ\1 Θ΅r¨a΄ωΆυΆΖζuδΤC‘C5<²Ν9¤WT4CM„q¨•Ζόr¨!s(y•ύ δP“ΕΚΈbΔΘ΅F…aΆ!f,^Uh9ΤθΈΘαάbνW0ο‹r¨1!‘ΫV…^mΟ™E9ΤδαmξΒO~BsΘ΅y&¶ΤMo±`ν;W>Ήb6ί²0cΆAY.”^6‡εJ8+—¶σι •€εXΫ09δΠ<Π84)ύl94χγPG4ςZθrhMΏΫήaηB94χβΠυ‡‡XCΝux› %«[sΘ΅9½–λxwTw}2®rhG°9ΜΨν*Ί?r–ΆΟ)}F΄ά―iΩλ\ω KΡVά”Εµ{Η έq t:ίγ­°T μΦη6kηϋ}¦ά―›Bvub—»e€G;gι„—έ3„= ³vr“5f©BΨU •t/ς ©²ς°λ>3 ξι3a§―Τ5›ai°GΰΥRνW•\r,v†x•¥v_”Cg©GcΗ­"σjΠΪcWc΄+dwGέύμWΩΏ―ΪQΦ‰ρ*“Ρμy5P>Γ―²,®ΏΫµv’Ώ#^ ΠΊΘά½? Ιΰή±Ψ―2k‡0φ`WY„6 Ρμ!^eω!°»νc±sά.…έ¶²]oρ*ΐ«ƒζ”Vέ; ξΐx•GΰU ½Β±ίΫkeγWΉSγθΨΥ•φξΘπ‘ρ*½¥3ώr4vΔ«< 3nrYΦΉΧΞ«‘!GΌΚι;b@7€ΨΉ9βUWλgoΈ ΠkΤL4cΠΫLpH[ΐέΆ!G‘=F{£ΓΨ?†¥ ΄…ρVΒ›)ΝώψΞ±JƒΪ7Jδ ’¦{·δH(ΌY]&OΏ―«!"7φ.ƒ=9/KΫ―Όx¥ζ9nZy_°δμδΕΕμωϊτΕ…­O‘ΝR!z.4Ω©Β“‹gU:Y―Ο.“ΛΏo*^S―ιεΰΉm®¤­eψ»"°*O+?CΚδ!•©ζπJ@e„‘Ιφ9y–\nN7τύΊδΨΩα!H_¬Q£Κ_NΎΏ\?›w(ΔΒ($e+γ)¤…ωΩzΏ\NΞΞ“Ώ―+Τ¶‚^)­S Εο0Χ¬)^‘>ΉΠΙσυrY%2ΛΝ%"e=sdΘm2έ·©<»XT©™γFΙ07ΉιΎ¬jΧKs‡—N?ΜΒ¨gϋXΏϊψ΅0σnυΦ·~*~ 7™΅R”>ΟΩ"Ω …F"L u¬υhΑ5f°ΗψάΕΆϋ.n―‹sχshέΘΆΟ!mι5\,“ο^WΏ­Ξηu±asZ&Oη'+¤y„[η ήψΦ7oήΎ³αC―ΨRvί¶½αΣ―χPG|a­δ0Ν’αjCΒ¬\Y»_‹"W€jΪ*7χs'µφP0O/ΟO:Βg›‘ΝO—Ίϊu>–Yω ΣΒGWΦ“•!­D:6 σΆΐwkµ¨()%Γτϋξ`τή½n•θVκxΎ7—Aο“δJΓ†Θ±ZΙn­–εΙή½ Z?‡AFΚ†@P½cl§UΦ›E#½t¬»εJ ©sξΔύ°`™0J΅¦άβ”Ξρ‰‡ψ¥~Π1»|µβτ†M®\±_+αsχΠ)¨«ππ‘xFδρΪ³ωΩΦr@06Ι¬^`γH\tku2ΎΔZ‰iβΊd>Z9FeΟ_ •dΘH[ dσV†Λn•N±JY•r¤K%Η με©θ€gƒC―.—J«ήrKΗθαkbvλu†o• sF†Θ±*9†TηO7H§<ςΨ#d–>w=.ΦΗhμΑι½`6Λν•UτΟλ΅;Ζ—sϋθ= “CδH²ή‹ΜΌυ&/½#³§(R°@§½Β|NζέζΜ+ψ9ΕNYΘtU¬Νέ…™±:9•ϋ!ΘδλΊ+φ½΅ϋ^ήSρDZ:=ΦUΰ Zζί9Oτ{΅ιhιά!ζΔ|1 ί­fFΝƒ”δηEWΕΊgfsςZδµ0‡—9oί9V½e—z½3³  Z%6αH²όά΄μTπyχxHε²Ά“ Iτ]+ ]Κ­ϊ§SlνDHνXά ”EηdQw|ι/β~-ΉϊΧοD―-3 ‚®­^ΌK§½Ή" ƒ—ι†ξΗ5U’ΆoμζRIt©΄?SΔyΠ™υ uώ•ΞχKφ©ΊΞ¥“μiΣ{~Ωk.Ή5κqΚz i΄Η¦s¤3‚VK«½9".Θ3θζέεξz§cύ©K%ν`h¤QΠ†΄Μ‡jdΊ4²ζ‡θ­Ε\ΓK{~ΘuΌά•j •‚®Η_Μ»T²ζ†DΠN*άZ*{dsxC½wΡ¥“53$² Β%­{,:‡`x^(lϋ2W°η‹` BtΊπ¬Π‘’}σ•cοPη Ο rςΠ?Ft]±[ ζ¤ΞUΗ—<„a*<¶?ZMD0τΛ± u™φfƒ$;τ-".ΞΣj}:?±g„dΠ}υY`ά1«e'x#ΣΌΆsάdλ4ƒ¨ϋ©KΣ;Ό•νr¬u›φζΈΒvbΣeΤ¨Θzj.H«μ„*πuφζ·dΠΆ~λω”uφf·d΄‚2Σε¨sΠ΄7·%£uqςξ$bofKζαΗhfΛ¥“ςy’ζπC ύϊΕΉς‚Θ£Βb1Όκ”d!•‹όΦ1w‰κ.οΌ‹¶‚A'GbίΑ\\κN§¶c^π8Sύ°Ϊ^]έΌ}›ΜNΏ|J^Ώ»ώυvΖ©GμΡΗO7?}ϋλνo·³|Ό1~Όz _Ζ―Νf³;>|ε:¥¬ϊ—¤όqV¥_KάφΑχΉW½CΜ|ΖMΒΜc®‹ }ΓφL'O’Yϊ°ϊ=ΜςT%O4·q«iΒU!cχΣ¬ώ3·Χο®o―«?ςώϊκζΛϋΩ§Ω‡ήΏ~7›15c3m½™ειμνΗ·Ή~sσφζΝlxΦ?” Kt–l[olΏs±νχTέχΕέΦέ_?;ί•η—λς"Ω~ΈΫμωώκ·υΛς¤ω­ΚΞΛ‹ΝΙ‹νΒW/w_.|ϋ_{5Ώ(ΚJ‘νz®έοΛ²ΎPύΙωwεωόΈ|ΥψΪ– ΞζΕΦ%οχΌzω|±\•ΛWλΣΥ&Ή_^έά^_%ΌΉύ9ων}eθκρ(}tΏ1Υύν]ΈΏs—V£[Ί¨|\υ5ό£΄X³ΪάMt`‰nΨXOt\ ΥήbΆΓJ¨‡ςΘ‰*΅Ϊ;›θ «‰)΅Ϊ[OtH ΥΏΝDG”PνOt@ ΥΏ=OFz‰a²‰'΅«6Ρι$d‹‹‰'!ϋΈθl²Ε³‰&!ϋΈθd’^9ΔβzΆƒI|€#7KB¶x>Ρ±$>ΐS΄mΆSI¨ηlΆCI¨>ΞωDg’-.&:’„μγrΆIΘΟ&:„μγjΆσHΘΧGBφq3Ρi$d‹ηFBυρgΔβ18\ “σ?P]|»ΒΈE¨sZ=eΗAφƒΫΒΊK@pj-Ήkσ "΄π§¬e½‰^q]‹\Aδ~τY΄K ΓKD{„‰‚;E+¥hίΩΌZt/Ip!ΧyΠ…< ς­jQ1°]-ΖΪά@δ¶ Ah®,v8Λξ'Ά~u,ς"',Λ–Tq£ΆDΣ@τΑ§εύ²‰‡…rΘ΅τ¥Ίxz%Τq,rΘ΅2‡6\΄'^Τ?+EυΘ΅2B uΘ’Ν‚Υ‘νΤ]Θ!‡ςc;#‘C•‘ΟGΡ«±r¨O¨†ικέΩ1Oδ…r(ύ¬kν{hVΪ™ΪΛ[ ‡j:‡!ΆGEΘ΅τΣ¬λ:g©ΫΉ•ZΪµP[E9T›0±¥ΎϋzΆJ-uΘΨ9Tη±Ζώύ+Λ5hΫP9WLr¨jΨmΎh½¨±y9υPδC lsGι δPa*`σ$µ_Ε¥ψ9δPCζPσ<*ϋΘ΅&‹•qΕ-C ΓDC$ΜXΌΠr¨Ρq‘ΓΉΕΪ―`ή59δPcB"·­ ½Ϊ3‹r(ύΌε!^θ Ν!‡ζiΨRc6½UΔ‚µο\ωδ9Ϊ|ΛΒ‰eΉPzΩrh¨–+α¬h—ήπQ X^€µ #‘CΝCΣ‘ΟζCsB“» y-t94Ο¦_Εmο°s!‡κwόpΗϊΓC¬?Ο!‡ζ:ΌΝΘEΘΥ­9δΠ§;"ήΥ]+‡ηl3v»ξ¥hη3ύDΰ΄ά―iΩλ\ω KΡVά”Εµ{Η έq t:ίγ­°T μΦη6kηϋ}¦ά―›Bvub—»e€G;gι„—έ3„= ³vr“5f©BΨU •t/ς ©²ς°λ>3 ξι3a7a2:Θό Ks„=―–jΏδ’c±3Δ«,°ϋΆ:K=;nU™WƒΦΎCΌ£]Ρ »—}LλΔx•ύ π½ώΨ‰ρ*“Ρμy5P>Γ―²,®ΏΫµv’Ώ#^ ΠΊΘά½? Ιΰή±Ψ―2k‡0φ`WY„6 Ρμ!^eω!°»νc±sά.…έ¶²]oρ*ΐ«ƒζ”Vϋ«Χυ€#^εxUC―pμχφZ™Α8βU.ΒΤ8:vu¥½;2Όb$GΌJoiΔΏρ*ύ\X—}Σ^†^ 9βΥΐ‚n±;ssΔ«΅z­½α2@―Q3ΡAo³!mct7†EφνcσύΆ!G~£ΏΡ ~Χt›‹‰:£Σύ\NΤnσlΆξθt?WυG§Ϋ\OΤ!ξηfΆιt›ηυH'ϋΉL'j’N¶ΉduI'ϋΉδµI§Ϋ\LΤ'ξηrΆFι½z ²y6Q§tδΨΟΥD­ι6ΧυJχAύάLΤ,nσ|Άnιd?Ο‰Ϊ¥“m±‰ϊ¥“ύ<γ5L§Ϋ\LΤ1ξηrΆ–ιt›gυL§ϋΉ¨i:έζzΆ®ιt?7µM§Ϋ<¨oΊr…O2Jύ±§¦[φΏ:δ=NμΘξτGύέΡϋ;«sAM¥Λ‘½φΆ™GO-)Ζυ―ubGσ£”>G«ύ;Χ0Τθ…κt$ΩΈuM7r6;¥χ:r­\¨Χ[Ψ?“|ΝRΊ Y£3DΐζG)ύ\λΊμNS°3όU_Nμhέ‘ Τy·~φΰκΕ²» E³λέk=/jyΔTΠ~ υ³—νPg Θeχσ<;jzΔ(]„Ωί¨δΎMϋ;JΖ d±ϊ© kΐπέoNμWι λΧΎΝύWΎάρq«¥~ηx;±#^¥w?r>«ΩNζνΟUΔ«”ώG~}κIvGΌJι€δ:—$"vΔ«ZΗκ Ϋρϊ周 £tAγ»²W0JΘ~vΔ«”>HΪ:y¤ώΉΦFπΨQ#$ζΧ ixΧΐΨ― ΌΪλjk?p1;>—‡ιβhο›;€±^9ΪξWMd^{2ΜΨ―ϊvD2}'|V.¦Α*YGO3;βUJO$αΪ9`§έ―RΊ"Αψ.ewt ›Ώ£¶HΜDΨ'{g£5ΌκξΤw`GΌJιdχ VΒ±c@΄egμξύC°#^¥τF=Ψ—f ΪΏ„΅ζH j#ς6jλhvΟρλ‘λΐφ7„±G‡ ²<ΒjQZϋ©,Φ-όj©Ψg"π9e# Kj―}axξ §WωώΉθΤΆw/aαε3ΨξφΕέrU:ϊ*¨ΏηfVaWΨ»­~υχ½’W­}ΡόχxΞq ΊB Ξθ²―+‚=OΟ7Εθ—ΤT©ωώ<y―8η0'ΰϊ%ΩΟΪΟ)΅Tΐ£FΗHƒ°³XΨY{jϋlΐWIs< Δ«Π²ρ°£Ή£_R |Fƒ³`«R‘ηx*γΖχ±3|#ζxΕςχ²lγϋ xΞ’β3aW‘UΘPt—{d^uI/^Εs<±ς·Ό»—έΉΐ12―Ά¬Τ‡›λ^γ&΄ΟΗθ—΄,ΤU­|5;ς™ύ’Ώ§AσH…°σX>Σ?Λκ7nBϋάy~IwDkΔT ξ§΅°έ#π*δ  Μ=Υ?ΓWIkέx~I«ΒρdΒ1ίXΫ]ΕΪΩΡ_3πΔγ>HNPϋIΩΚ•ΟΰgΥΔκK¬”U·¦Χg°ΏηqU—\ωΥ#‘έcτK²νΞΚ@vG9p~I#μ>®†Ν7Εθ—4•FΫεb<―®v¬Ώ€5™2ΘI– Μιύ’ GύkΥΫ-Τ―ώΞ1φ,Πω„ΰ92ΪσσαΊ½_RNq Τί½xu·Χ`§;SψHΏϊ;ζ&zΗ¤αΥWύέ°ΑΨq|Οω>kaδe`χzV%zVW‡WΫν»ί:lΜM‚ΕzVϋεΚk=Dq†ή9 Ζ<ζ%aeXϋ•wΏ‰ΗB„Δ^3]·.ΕwGϊuOκ―¶GΔU2―–0ώ½•wrύΧτθ”ϊs‚ υΘ]€]‡ρwWµ=0v#MΠgupζ‰ε"s*z1[όκοετNJΓ«νt»gθY•τsέV}Ϊ]g/•ΪΛξhΜ'ΙΌΊ*†VΨδ¨.&νΦDGξ¨Ή§ν«„Η®ΐ.ΓJ;dOύ|‰r™Ε‘Γ«ν#xϋ;™Wνj;¬Ή»*ο~υw΄^KωY ;ΦΖώNζΥ•#’DΑγLλ|Ϊ•θ­ΌzΟγΉƒ, ™ΐgκYΝP>“‘yµ|ν΄»Wοω ΕHz‡%Ϋξδ<¬έQ.–‰Iν>r y†ςχL›υχ]O(€Μ«Υvϋ~ΊωιΫίn>>z/ΧWf³™γΝχΌJΜ|ΖMΒΜγT=ΞςGιΧ’Ζ<°Ώ}2¥Sn}ςΙ“dΖΈ~Θ »›δΙ“£δ’νΗEςΣ›ΏΦ?ί|ΈMnώzτ`ϋσ—o~ϊp}µ»IΙ7o?~Έ}υγΝνηζεZ~ώηΝν›όξυνΝφ—κ+wW·½yύω:9™_®OΩγδχmϋ«Ώ'ωρΣυλόµλ#|#Όο#Ο6k³±χ{»w—ε³ύ·JΗw_]Ώ}ύεέντw”Τ¬nΚμί¶οϊΟτΏ’Ώ%/‹κM·Χ‹›Ϋχ―Y}ϊψ~ωϊφυwoΊϊεΏΦoτργνΓ£Ω½νΫ神ό{ώµ¤Q[αλ{woήaϋηΝΥνΟλΎΎωιηΫΏlUή½ηwπ{ή»‡μg7ΏUΨ»1ο>¶ϋ3―ώ†?LΨΧοιMϋ­ΗΕώ76F{¤ΥΏκ#[§U,}¨’™‡zη²GI­υξf¦Ώ¥Χοέϋφ›δb“όωΣυηλOΏ^_=L®>~ωρέu²Cσ—δ›oχ?τ¶ωΠΊγCoώηzχ™υgvϋ[ς§δOΏίpόmμΗϊΫΚ‹ΆύΊ―υήVγνgwΏ4M¬Αΐalevt-v1.8.0/contrib/alevt-1.6.1.rus.diff.gz000066400000000000000000000173221345074102600203250ustar00rootroot00000000000000‹‘^b=alevt-1.6.1.rus.diffδ]yWγ8¶>…:=SΛ»CQΣ¥*ΰ3]σ€“c‡ψT¶I ^W}Πχmή•δ$rΌxΑo™®#lYΛOWWχwµDΣ³ϋ}T=_Μ9΄*®©5\›ΜμΗΓΟζW«o-ώΛ*rΏZ­†gΩ»YXθdρD JkuE‚gAά/—Λερ9°TWΊ‚Y_EUΡ¨`•ΙύϊλΎ[DΧΦΡ_‹Σί―Kϋh%ΈΈΌ)­βQu²N±­/—ΞNIϊύj2vj“:"qνωaDDςΔ>Ξν΄jƒ{ύΗ™5EΥ*όάƒV­BPBτa]~9ΆJϊ$Ρ²Λ―TΞ'έΖ*‹Ϊ_'®£‡^_$)ώRl_ί”CΣ±ΗΠUς­.ΏΣ,θ}@2V8-nY¶U¶X¶ΈY¶Έ.›IΏΜd$yΛ~rκΧ‰­ΣRΛ¥Jθ½'+OZbu“®J«uW:U½@Υω:θ”ϋ²ί A+µƒ{μΡ{ο§ΰΡδM³χ‡ΥC]a0 ©.d„Ύ1µ‘ocdiuY^,Ω¨h¨LC2®…¦³ΙγΜ!Ημ±ιXsτΝvΘz¶4wLg1G™}ψζζ“=~dωΜαΜ2{/*v3;5­y ΅ψi.†²ηΘ™ o&ΥΜ¬'kVΫGµ›Λύjντ έU»s6·t‡\ΊϋώέΥ€ύς«Iΰ‰τmu¶®­΅ΥuζΙav)^Θυ/ζΰj,£ηhέ χδ ϋΦοΑΧ=¶"KDHε-2H4Tτ&γ+y"™»&4 u`F¦C’l¶i` §ώύΝEz΄ςµΡWΓΟΦ™ΕG>–€·ΛΆP$wτ…Ψe7SδθSEb”iH§vzfοΑΡ!<'δqµΖζΓΠφμ9} FΛΝ&3D€;'B_E“φώ›ZλyZ}μ?oΪUlpG―>ΣϋlΎ Dz·.ι΅έμΝΪΙ"&LCjψΥΒ“ςϊ\y9Ϊ―"΄γi±Qu€ζ³ξ1*ΊγφoΜλ<ΨΠΜ[ι –‘Y?άGα"ιέμ<wx#_;/ί\C‰Πk}0pFΓ€N`Ρα½ΐΎS™Ρ¦!ΧE½. αέΐε §:+X¶ƒΏΆ°Άίn>κ"TΥƒ΅λ›«³ΛΛV³CΎ,ΫΪ.y±π~d9&8Ξ΄ c?ί CPρκΝΛΤΊ+ .{…υμ`G…JZΆέK @ϋΕώ΄RpGέ±=Tu]1νέ>*λΗΠIb‰υ/pΈgέϋµΚSfΰ¨=e=\®“ςKGΘ5ΗΎόβ+ωΕπό„S‚s3σσΗF1ΘςcλΌuursqε‘πΚΛ΅R£2ήθRΖoΛrΧΠXα™Λ?¤{!¤”ϊΒ[ΖΦ=ς³5†AΎΩ3Δ [ <ΒΠ°wό³¨ΰ±ΟΎνµg6χHG‚P'D ƒΩ0 ίΈwΣΏβήJΔ½•™{Λ&ΝtjcwΡα:ƒ X7`¦zNΜ!:8δΦΒj[ΨYlΩ+±ΨΧ„2π7d!”Α¦PδΊ Fe-ƒψέΛ‰ΰ>Lχ€®Η^ϊΰhβφώ("ΈJSM#­ΛYwωΠωfχΑ«‹>o|Xφγΐq°—(ΩΝργ†Β±¨`Ω²o{Χ‹1ϊ}1DXGdF%Υe=X¶nϊWN& §ψζS07ζN](Γ;K*μy·6πhΈ’ήΆh}²R1T ³•υθΣΔξν+ω$RKU\θθ`Z΅<>fH Τϋ ¦‘Δt+\w’α¬ΗλX8b“(β©/mδ1›M”Π»w΄Ψγc,‚i$£k¶ΟmsL†-ςΫ€,2ΗΥ*o;¦+γµόkχ‹έγcα?”HΕ€ΰ'ψsD m]7\; 0©pAξάΩ•U}\2²η°|Εn‰«ίύFUVZ»0kM΅„~‚¦?‹‚79ΓG•”‰5-NKG\\Υ?ΰq=ksK·@b :ΜΝH"&gφ G$Λ΄\fEώ€πYC΄”?™9ζ¤Ι" Ξ΅P:dπέv΅Θƒι=™IBWοmΧVΠB!“¶ƒ)Τ±q~KQαϋ[Ζ=ϊ{ΐ-b@Ab€X*&G" ¨(@@Ί_Ιόq¥hΆ±eυ@9Ψ,hgυN8b½vυ€8΄χO¦ΣD?Μαt`¶οPΏ.€Μ,gF -Σ€^ώςξ΄ρΕ}!1πκΜίRm™‘=ac‚ΤςZ…θ8]β^Gέ¥γΑ b†$ινύρDC„ηL1 EJ4”i¨ΠP¥΅FC†F…ε>΅o§4lΠ°IΓ Ϋ$lΣΪ΄†6­΅-±άmZG›ΦΡ¦u΄imZG›ε¦5΄i mZC»ιζ¦u΄ 6h ZGƒΦΡ ­hΠ΄†­΅΅±ά ZGƒε¦u4h ZGƒ¶ΆAkhPMZC³άMZG“ΦΡ¤u4iMZG“¶ΆIkh΄†ζ©››ΦΡ¤u4iΝ¶λ=ΡQκΪ5Δ6j~@―>±# ΤZΒλ{ςυAΟ¦Η¬kέ‘ Θ$ν½§¦~4ύ/υΛ όGu‰‚†ι²Φ+<½^ΗΜqΧ*ΊΛiξ+:°zέIΟ …$Ά‡CyU1ύHΖ5¨~ƒ^w`NΘY‘5κN_δ+pέlΛq$YANώΐ3Ω‹τ‹PόrυL+ΐUDψΓΟώ\.|±e"¥]gb6΅"Λ$ µvfo†ή£?@g“oπψ[‰,h­l묓u«Έε¤.΄νν=ΑξCΟtΜ[(ηώΚ½Sτ(Μi‡eΈ%_«’=²¬Ξ/Κά‹Ώ|qΫςE®|’cµdΖ CEµZ IxS&µotυΎg›έ™ ζΩ‘9ϋκ®A¨TΜΌσkc©_Ζ‰‡`Π‘ξ`V$T?<Βθ!ΨJL΄{›rέ *)’δ„YQ®$AΉ—e»βά[Ιr/ZΑe›e.[,wΑόxΥ£ψ½ΐA„G9ΨϋΞ—ω$>Ό}>™Ο§ςω–« ”δ Ϋh2³άΌU77ΡhjυΓ”ΤhHΣ€ω±σωδγuλκμδu^ ign{’d¬ uξ zΐ¥e§¤'γ¦a.@χ•ƒ7Θ]κξΠΝΑ94¬OθΓΣμ2¨ΦW(|Γ—"ρΟa‚#‰¥£#OΞιγxB«G [$*`™ Jo'MT„Ύ*ΑΣ„%:o‘ϊZΘ5,5]8£*άΙwβz‡ο”;ιN+ά‚θr…¬WάT΄G®νή½n«kYuΝ1ιvΊΖΠϊόύ΄|ο !ίIΫί±E‚@\ ¶\”ρΚ ςχJωlήzΛ%ηhΉ½¦_¥–©Φθ€ ώψZ2«ΊS°ξΪγ…‚ξ+ζX¥Z/UΔΦbςΗΥΆεVλαΡbΌƒΫg…r#kμΐ4d•`©«LM[μ|ΉUYΩΛ%¤κΘκΩ‹QuVΣώ*8 U\Υς―[5v„άs»ow«PΚυΩ΄΄¦ΐ?VζιΕ?Ξ›gηO/Ύ ƒL$πθάΪ/―..[W7g­k„΅m—gη7VΌ}i}rίΤύςUλϊβΣ?nΞ.Ξ;_hα\ΔΏVµuN®-hέχf‹E@•'l]|luώ8kήό† ¨πτ ΅B|¶Ξ—Ο§Νv«Ω9;o_ B«g“9u G ]x‘jB­ΰ@D/­σζΊϋεΖo'WΧΔ,ΉM$ο”[’΄qADHΥ …®ΚymΊ Θσι©GR§g7O.χΛέƒΞ.„†°›Έ1‡ΗΑέ¦¥‡…™α9άb,y·u!"| yK±δMρ……™αζυ[N_ΏΫ[„‰ε­¤―ί™αζυ[M_ΏίDήZϊϊn^Ώυ μw΄µΩbμn!o#ϋn^Ώ± cΟ 8―αXΜΐ„Gά”$.e`Γ³ξΡq9#ώ&W2°βYχθΈ­lΫH\ΛΗά£γz>xr‰ωxβ±€σ:. ωΈβ‰%.β||ρΔ:.ω8γΙ%.εγ'Χq9w<ΉΔ•|όρδ:®ζγ'—Έ–?\Ηυ|όρδ7ςρΗλΈ$δγ'–Έ„σρΗc—<"­‹K\Jλ$”›!‹ηC>=³=r™G€Υ7Χθxό<ΓϊΓ]‘σ&ζP6ϊ$Ι†ΕK±g*Ο΅jbΕB~: Δλ”8rCΥΔρkΉ΅ΊΞµ+rCU#_ΡEΕ¤*s{F2·"ΚΙ<ΦlNγ9Tή9jqΌ\ΝsΘg¬η>Ϋβκy3rCµΔfρΆνa,«¨ρIι¬a}·0–®ρ%ηΠ°Ω=μΕBΞs¨–|bχ<»>›©ΕCµδΊυQr«Θs¨–CΩ:gK[ο­°ΠΏκwEΞs¨¦§c[Xοk§Ua΅–¦mα9T3²ϋG‡±Ό\έσ³!!c_QH‘CuCuό†2?]k‘+sf9µm‘σ‹Λ<Δ‡euCυ ζ΅·RκJ5%=η9TOΜ΅Ό 4LΩ_η9TW²ςΈ²°-<‡κj:L΄MΘ{,±V΅uCu-[δόή"Σ+ήοΪ9Ο΅Ί&rΏTy­φο™ξηPέH_ζaψPƒηPCHΗ¶0Μzδ*b―S¶γψ†ηΗ·89ΡV^.Ζ’9Ο΅FJkΉ2Ώ+'¬χΣ]>jq,/qgvDΞs¨‘Κrά»+v―b-«_¨©Μ=°‡WqΧ0d¶Κ±‡W±ρΨΓVΫwΕ.zo£²Βξ—²½}gμ^3ΰΥ­φ”Ϊ›§Χµ-|`ΡΓ«bΌρZς{οX'3°θαUQJg#ΰW]Bδ/2bΩHΡΓ«Ι―4Βzόpgμ^•tζMa’ ύ­]¬‹ E―ΙΓέυΝάΆ‡WΕ”x•½νΓξΥsΪ1Ό¬g›k³Έέ(3δΛΕυFo#σ,ξ7Κ ΉGΟ³Έίh«ϋ®“Λ\Κιfτδz.ηt7zr™+9έ\ΟΥξGO.s-§“λΉΣιΙenδtGzb=—….IO,sηtKzb=—Ε®IO.s)§{“λΉΣEι‘νΪJζJN7¥ΗAξΥs5§«“Λ\Λι®τ8Θ½z®ηtYzr™9έ–XΟ!§λΛ\Α9έ—XΟ1§ Σ“Λ\ΚιΖτδz.ηtezr™+9έ™\ΟΥ.MO.s-§[Σ“λΉΣµιΙenδtoz,δχΙH]ΠƒΓθ―Ϋ¤ Εξ‘{ς;ΆoGΎY}Χ=Ο%G8Ι-Gώ³ξ>Ίΰ ¥έξ― ΕξΩMrΟQΜSΘρo®Α‹pZ7Ιx·;λάΫΘρΨ=ϋ£Ιο: ;ΉΐΞ[ψιg4ΙmGΫΡΩ&ά»g4Ι}GaηΊό7Mρ7Γosκ+»ηά‘Ν»lμρ§sN›Α·PΈΏzuΧsεVS½―=…ΆV06ƒΗσ®Ψ=—α$·I]άΥφ4rαΟδWψΫI`ν}M-wfχ„ZA¥γC¥Y`U’ΝmΥήdΘΜέxύrE'³—¬—'“ρΜxl?“ΤΟFA]¦νR±γ"ΤΊ/νP?ύΦωUsζ#θυ….‡ουwΎμΐόjμ»Ν–κΥρnΔό9ϋQγX «v΄½¶0V‘_5α?γ©7’;ς«& HMuIbG~5]ρΒ¶GΌzq$"AΆ&,HΒΎGςΖ@ί²οΐό R,UΧβΣψ‰}μ‰κ1!©σΌZΖόjbΥ―¶ΗΊ±twΕλο2;,ςΉ)ΑF[ΫΞrG~5qμW»V†ΩωU]F¤¤­Β—b±μ’mΰ4IT°#ΏjΒ‰δ7ƒT8Ε£)wδWMX‘ }‚·­£έψΡ"ΡΔΑ9ΘφπF»¨w`G~Υ„Iζ ό†ώ–i0vFfοWΑό 7Rμΐ~ΤGΈ* EδHΤ„ VµρG[«;“ϋ—Xw–kάΜ=*.HGVTy*§’Ό.ΧΛ¥bqΰWcS Ι¥6Φ:†ΧF&σUV―λΖπΦ³„\Kg°ά?ε|w›¥ Ό ςο#+«?¦‰Er·q_/ξ‚+i£γΡVΎhύF=1lg¬ξP‚kqΪΖ ΟΔUψ4πz“ Ύ¤M–ΥΧ΅Ο3cf/I«Q=¦„m4³Lvκ ϋ¦my6ΰ»FkΜ³δW΅dέaGkΜ_R t&µ#ΰ­Θxν€y[ϋήu…―ΓΪσBWϊ¦[ϋΝ97ΡaUθ΅Μυ=@ΨϋΥ¦VΛ―βµζΉΨω›ξΖ®%wζcιΜ―Ά¨δ‡7―kΝ›Π9wζ‚/ι+δU¥x?SΑtΖ_wΟj!μΜ•Ξ΄―²κΝ›Π9wζ‚/i‡…‘fL\™O#ΒrwΰW΅ ΑΪ“Έ†ονuc.ψ’2ή02αOo®εΉ:ΩΡ3ΠΔνLό]b΅'ι¶ΝτtΥΔ/qIykσό Φχ‘Ϋ±ΪΤfzωH$w|I²άijIξ(vΑ—ΤAξέrΨΜGσ&|Iκ^©³άQ,ΖψΥ¬ςϊ`N&µRΙ’ΆΆΚΜ/‰7δΏ²V¶P½ό;ΓΨCKυ Α8T™νιΝωp^Μ/I ‹hςοZ~µ:k°›Χα:­^ώϋ&sΖ$υlLSώ=΅ΚΨ±}Y™θ Μ…% .c»ΦX ΠXυ όz¶]ΞΉλνΓΖΎΙ§®Ζj{›iν'1gN‚6/λ’03σzζ]ΟFβΉ‡οΫΔ.<·N-ΩwGκ±'µgΫbΗcΥΨ―¦ΠώρΦΜ»qώητΜ”Ϊc«ωΘ`νθ{S¶έ2vl#«cU9 ΣΔbd§*:ο¨-zωχΕζLJκΩvsΉ‡h¬ζuέ²6†φ¦ΪKi¬%w4η ύjΖU3μb” ,ΥvΫXGΦsχ¶οδ8*>€=°S•VεL“y}ΕAθΚFgΫ;ψU¬οΖ~UΞ¶Γ{Sζ]/φ‹± vύΎό$x;υΗa<qϋΩR¨GϊΥουΘ?=²ώωΘΙύν‰Έ.JRτϊλλεΣΆΈΚ§ΥΧAοfOε7EΉΨΌ-ΪΕ·ΆΌ}Ψ”Ε=X=²zuύs;YδδηχΧ—tL^;®―¨xΉ™η“?OήκΒκ]X[—®.’zΏ΅Γ4Ώ›,KHφΚJΌΓΦwύζύNNΙ―|uS™(ΚΟ“/Ω|φω|RNφ«›¦_ώΫη³Y9θ χΦ?λg ‘Ιφ―B|΄—{«›+lίiω0ΧyqP¬€‰{^ΑZξ­a§ϋ/Εσ ϋΫ«nΥixτ!ϊςόϋΫνS?ςϊ7BoυoΥe­‰υιG4=μρ©«ο{φςρήήρ!ωtEφηω"Ν§2-osR΅9 ‡ΗυNw›NotZηUΎθSυ;%οΘ»Χ/?ή§¥ψφq/uoύ‰Χ}«lζ?type == EV_PAGE) { struct vt_page *vtp = ev->p1; char *name = export_mkname(fmt, "ttext-%p.%e", vtp, ""); export(fmt, vtp, name); free(name); } } int main(int argc, char **argv) { struct vbi *vbi; struct export *fmt1; struct export *fmt2; fdset_init(fds); vbi = vbi_open("/dev/vbi", 0, 1, -1); fmt1 = export_open("ascii"); fmt2 = export_open("html"); if (!fmt1 || !fmt2 || !vbi) exit(1); vbi_add_handler(vbi, event, fmt1); vbi_add_handler(vbi, event, fmt2); for (;;) fdset_select(fds, -1); } alevt-v1.8.0/contrib/howto-export000066400000000000000000000065661345074102600171020ustar00rootroot00000000000000HOW TO IMPLEMENT A NEW EXPORT MODULE: As an example look at exp-txt.c (it implements two modules which are pretty similar). You have to create one exported structure (struct export_module). This structure holds the following data: 1. The name of the format (example: "ascii"). 2. The default extension to use for building filenames ("txt"). 3. A list of module options. It's a 0 terminated array of char pointers, one for each option (similar to argv of main). If an option string contains a '=', it is an option that requires an argument. The part after the '=' is ignored at the moment. Later, I want to add help messages that show these options strings and then the part after the '=' becomes useful. If you do not have local options, set this field to 0. 4. The number of bytes for local data in the export structure. There you may store data collected during option parsing or for whatever you want. Don't use global variables for storing this data! With alevt-cap you may give: alevt-cap -format ascii,color 100 -format ascii 100 to save the page in two different formats. Using global vars would inhibit this. The data area in struct export starts at the 'data' field. You have to cast it to the appropriate type (see the D macro in exp-txt.c). If you do not need local data, set this field to 0. 5. An open function (or call it constructor). It is called when your module is needed and it is passed a struct export (the instance). This function may be used to initialize the local data in the export struct. If all goes well return 0. Else call export_error (see below) and return -1. If you do not need an open function, set this field to 0. 6. A close function (or call it destructor). It is called when your module is no longer needed. If you allocated memory in the open func, this is the place to free it. If you do not need a close function, set it to 0. 7. An option function. It is called for each module option the user has given. It is passed an option number (first option in the option-array gives 1, ...) and a char pointer to the argument for that option (0 if the option does not need an arg). The argument pointer keeps valid until the close function is called. If all goes well, return 0. Else call export_error and return -1. If you gave an option list at point 3 you have to specify this function. Else set it to 0. 8. An output function. It is called to produce the output. It is given the file name to use and a fmt_page pointer. The fmt_page contains an interpreted image of the page. There are no control chars in it. It uses the character set defined by the two fonts. These function may be called consecutive for multiple pages. Don't expect one output for one open/close. Return codes as above... (0: ok, -1: error). The export_error function: If one of your functions wants to report an error, it has to use the export_error function. It's a printf like function to set error messages. In alevt-cap these messages are printed to stderr, in alevt they will be shown in the status line (so don't make them too long). The last step is to add your export_module structure to the list of modules in export.c (at the top). Please, make sure that this structure is the only exported symbol. All other things should be static. That's all. A structure describing your module and 4 functions (open, close, option, output) to implement it. Shouldn't be too complicated. Ciao, ET. alevt-v1.8.0/contrib/icon-old.xbm000066400000000000000000000055231345074102600167040ustar00rootroot00000000000000#define icon_width 79 #define icon_height 55 static char icon_bits[] = { 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x03,0x03,0x06,0x0c,0x00,0x3c,0x00,0xf0,0x00,0xf0, 0x03,0x03,0x06,0x0c,0x00,0x3c,0x00,0xf0,0x00,0xf0,0x03,0x03,0x06,0x0c,0x00, 0x30,0x00,0x30,0x00,0xc0,0x03,0x03,0x06,0x0c,0x00,0x30,0x00,0x30,0x00,0xc0, 0x03,0x03,0x06,0x0c,0x00,0x30,0x00,0x30,0x00,0xc0,0x03,0x03,0x06,0x0c,0x18, 0x30,0x00,0x30,0x60,0xc0,0x03,0x03,0x06,0x0c,0x18,0x30,0x00,0x30,0x60,0xc0, 0x03,0x03,0x06,0x0c,0x18,0x30,0x00,0x30,0x60,0xc0,0x03,0x03,0x06,0x0c,0x18, 0x30,0xe0,0x3f,0x60,0xc0,0x03,0x03,0x06,0x0c,0x18,0x30,0xe0,0x3f,0x60,0xc0, 0x03,0x03,0x06,0x0c,0x18,0x30,0x00,0x30,0x60,0xc0,0x03,0x03,0x06,0x0c,0x18, 0x30,0x00,0x30,0x60,0xc0,0x03,0x03,0x06,0x0c,0x18,0x30,0x00,0x30,0x60,0xc0, 0x03,0x03,0x06,0x0c,0x18,0x30,0xe0,0x3f,0x60,0xc0,0x03,0x03,0x06,0x0c,0x18, 0x30,0xe0,0x3f,0x60,0xc0,0x03,0x03,0x06,0x0c,0x18,0x30,0xe0,0x3f,0x60,0xc0, 0x03,0x00,0x06,0x0c,0x18,0x30,0x00,0x30,0x60,0xc0,0x03,0x00,0x06,0x0c,0x18, 0x30,0x00,0x30,0x60,0xc0,0x0f,0x80,0x07,0x0c,0x00,0x30,0x00,0x30,0x00,0xc0, 0x0f,0x80,0x07,0x0c,0x00,0x30,0x00,0x30,0x00,0xc0,0x0f,0x80,0x07,0x0c,0x00, 0x30,0x00,0x30,0x00,0xc0,0x3f,0xe0,0x07,0x0c,0x00,0x3c,0x00,0xf0,0x00,0xf0, 0x3f,0xe0,0x07,0x0c,0x00,0x3c,0x00,0xf0,0x00,0xf0,0x3f,0xe0,0x07,0x0c,0x00, 0x3c,0x00,0xf0,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xc3,0xff,0x3f,0xff,0x1f,0x3f,0x7e,0xfc,0xff,0xc1,0xc3,0xff,0x3f,0xff,0x1f, 0x3f,0x7e,0xfc,0xff,0xc1,0xc3,0xff,0x3f,0xff,0x1f,0x3f,0x7e,0xfc,0xff,0xc1, 0xc3,0xff,0x3f,0xff,0x1f,0x3f,0x7e,0xfc,0xff,0xc1,0xc3,0xff,0x3f,0xff,0x1f, 0x3f,0x7e,0xfc,0xff,0xc1,0xc3,0xff,0x3f,0xff,0x1f,0x3f,0x7e,0xfc,0xff,0xc1, 0xc3,0xff,0x3f,0xff,0x1f,0x3f,0x7e,0xfc,0xff,0xc1,0xc3,0xff,0x3f,0xff,0x1f, 0x3f,0x7e,0xfc,0xff,0xc1,0x03,0xfc,0x01,0x7f,0x00,0xf0,0x07,0xc0,0x1f,0xc0, 0x03,0xfc,0x01,0x7f,0x00,0xf0,0x07,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0x7f,0x00, 0xf0,0x07,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0xff,0x1f,0xf0,0x07,0xc0,0x1f,0xc0, 0x03,0xfc,0x01,0xff,0x1f,0xf0,0x07,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0xff,0x1f, 0xf0,0x07,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0x7f,0x00,0xff,0x7f,0xc0,0x1f,0xc0, 0x03,0xfc,0x01,0x7f,0x00,0xff,0x7f,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0xff,0x1f, 0xff,0x7f,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0xff,0x1f,0xff,0x7f,0xc0,0x1f,0xc0, 0x03,0xfc,0x01,0xff,0x1f,0xff,0x7f,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0xff,0x1f, 0x3f,0x7e,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0xff,0x1f,0x3f,0x7e,0xc0,0x1f,0xc0, 0x03,0xfc,0x01,0xff,0x1f,0x3f,0x7e,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0xff,0x1f, 0x3f,0x7e,0xc0,0x1f,0xc0,0x03,0xfc,0x01,0xff,0x1f,0x3f,0x7e,0xc0,0x1f,0xc0, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 }; alevt-v1.8.0/contrib/icon48x48.xpm000066400000000000000000000067331345074102600166720ustar00rootroot00000000000000/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "48 48 62 1", /* colors */ " c #000000", ". c #4E4E5D", "X c #007B41", "o c #403F45", "O c #07E41C", "+ c #020408", "@ c #000006", "# c #665C6A", "$ c #201818", "% c #37373F", "& c #8E8A9E", "* c #242425", "= c #02250A", "- c #2C2830", "; c #201C24", ": c #0A0C0B", "> c #18181C", ", c #1D232E", "< c #101014", "1 c #0C0C10", "2 c #08080C", "3 c #020206", "4 c #1C1E26", "5 c #060917", "6 c #060E0D", "7 c #191823", "8 c #11161E", "9 c #000CE1", "0 c #0000F8", "q c #05090B", "w c #CED2EE", "e c #000370", "r c #00C729", "t c #00586C", "y c #009E47", "u c #6A6C7B", "i c #1B1C20", "p c #282830", "a c #050807", "s c #1F3227", "d c #202028", "f c #1C1C24", "g c #181C20", "h c #181820", "j c #14141C", "k c #0E1816", "l c #101418", "z c #47474E", "x c #101018", "c c #16256D", "v c #575764", "b c #0006F3", "n c #131317", "m c #1D397A", "M c #041508", "N c #282828", "B c #0A1B11", "V c #202020", "C c #505059", "Z c #181818", "A c #101010", "S c #0000FF", /* pixels */ " ", "wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwN", "wAAxZZZZVVVVVdddddddddddddddddVVVVVZZZZZxxAAA2Z ", "wAxxZZZVVddddddddNNNNNNNNdddddddVVVVVZZZxxxxAAZ ", "wxxZVVVVdddddNNNNNNNNNNNNNNNdddddVVVVVVZZxxxxAZ ", "wxZZ&uu&&&uu#vCoooo%o%%ooooooozCv#uu&&&&&&&wxAZ ", "wZVV @@255xhh44,,,pppp-----pppp,,,44hhx552AaxxZ ", "wVVd @a2AAAxZhhVVddddddddddddddVVhhZxAAA2a@aZxZ ", "wVdd a2AA>iii4dddddddddfffffiih>jn<>hiiffffffffffffffffihh>>jn<>hifffffffffffffffffiihh>>>jnxhiiffffffffffffffffgghhhhh>>jnn<1aVZZ ", "wNp- xZ>hhiifffffffffffffffffgghhhhhhh>>nniiiffffff4ffffffffffffgggggggghhh>Zn:dVZ ", "w--- >iifffffff4ffff44444ffffgffffffffiiiin:fVZ ", "w--% >ifffdffgff4ffff44444fffggggff4ffffhin:fdZ ", "w--% i>>>>>jjjj>ghh7777ff4ggg>ggggggg>>>>nn:fdZ ", "w-%% 33a:MMAABkklxx888h>gkkkkkBBBBBBBM:a+33*dZ ", "w%%o M=MMMMMMq255555B==M6M=========Ma 3*dZ ", "w%%o@@++=XXX===X=55555558XsB5=X=sXXXXXXXB55+*NZ ", "w%ozeeecrrtyrXyrteeeeeeetyXcetrXmttyrXtmeeeedNZ ", "w%oz0009Oy9tOyyrt9999999mry99trt999yrt9bb000pNZ ", "wozzSSS9Oy9tOyyOt9mtt9bb9rr9btOtb09yOmbSSSS0pNZ ", "wozzSSS9Oy9tOyyOtmryrtbS9rr9btOtbSbyO90SSSS0pNZ ", "wzzCSSS9OrtyOyyOtyOyrybS9yr99yrt0SbyO9SSSSS0pNZ ", "wzC.SSS9OOOOOyyrtyOOr9909mrytry90SbyO90SSSSSpNZ ", "wzC.0009OymXryyrtyrXtm999etyrXm9999yOmb000SSpNZ ", "wzC.++5=rX=XyXXX==XXX,eee88=X=85555Xr=55++@@ppZ ", "wC.v3 M==M==========B5555qM=M++@@a==M ppZ ", "wCvv3 aMMMMMMMMMaq++++aaa3 ppZ ", "wCvv3 @33aaaaM666666A61155161:22a++a+++333@+ppZ ", "wCvv+:12aaaaa:1nn1pNZ ", "w.v#3A<11::11<>>jnnnxx<1::pNZ ", "wCv#@2A1111hhhhhhhhhhhhhhhhh>jnn<<1122pNZ ", "wCv# a2111hgifffffffffffffiihh>jn To: egon@pr-kaapke2.do.eunet.de Subject: Re: alevt Hi, >... > Einzelne Seiten tuen es auch. Ich bastele gerade daran. > > Ich habe folgendes "miniprogramm (vtx-get) geschrieben": > -----------------------8<------------------------------- > void main() { > struct vbi *vbi; > struct vt_page *vtp; > fdset_init(fds); // Warum brauche ich das? > vbi = vbi_open("/dev/vbi"); > while( vbi_query_page(vbi, 100, ANY_SUB) == -1 ) { > // wie komme ich jetzt an die Seiten ran ???? > } > vtp = cache_get(vbi->cache, 100, ANY_SUB); > printf("Page: %i \n",vtp->pgno); > // jetzt die Seite rausschreiben (nach stdout) [kein Problem denke ich] > vbi_close(vbi); > exit(0); > } > -----------------------8<------------------------------- > Es laeuft nicht :-) D.h. es liest keine Seiten. Kannst Du mir vieleicht einen > Tipp geben ? Ganz so einfach ist es nicht *g*. Ein paar Erlaeuterungen voraus: AleVT kann gleichzeitig mehrere /dev/vbi bedienen, Fenster auf mehreren X-Servern oeffnen usw. Das bedeutet, das Programm muss auf Ereignisse von mehreren Quellen reagieren. Weiterhin sind fast alle Ereignisse asynchron. Aus diesem Grunde gibt es eine zentrale Stelle, die auf ein neues Ereignis wartet und dann entsprechende callback Funktionen aufruft. Die zentrale Stelle ist in fdset.c. Mit fdset_add_fd() kann man Ereignis generierende file descriptoren (fd) registrieren lassen. fdset_select() ist die zentrale Routine, die auf Ereignisse auf den bisher registrierten fd wartet und dann die dazugehoerigen callback Funktionen aufruft. Beispiel vbi.c: vbi_open() oeffnet das /dev/vbi und macht nen paar Initialisierungen. Wenn soweit alles ok ist, folgt dann der Aufruf von fdset_add_fd(fds, vbi->fd, vbi_handler, vbi). Das Bedeutet, dass immer, wenn sich auf vbi->fd was tut, vbi_handler() aufgerufen werden soll. Dieser holt dann die Daten von /dev/vbi (via read()) und dekodiert sie via vbi_line(). vbi_line macht dann alles moegliche und verschickt dann, je nachdem was in der Zeile drin war, events an die durch vbi_add_handler() registrierten Module. Hoert sich alles sehr kompliziert an, hat aber seinen Sinn *g* Zu vbi_query_page(): Ich hatte bei dem Design von AleVT immer im Kopf, dass sowohl unterschiedliche Anzeige als auch Input Geraete implementiert werden koennen/sollen. So sollte der High-Level (ui.c) nichts ueber das Konzept des VideoText liefernden SubSystems wissen. So liefern z.B. Karten mit Hardware VideoText Decodern nicht laufend Seiten, sondern diese muessen angefordert werden und kommen dann irgendwann spaeter (aehnlich wie beim normalen Fernseher). Oder die Daten kommen per Broadcast uebers Netzwerk. Weiterhin ist dem High-Level auch nichts von dem Page-Cache bekannt (mit einer aergerlichen Ausnahme beim Suchen). vbi_query_page teilt deswegen dem VT-subsystem nur mit, dass man gerne die Seite x haben moechte. Das Resultat ist, dass irgendwann der eventhandler (vtwin_event) mit einem entsprechenden EV_PAGE event aufgerufen wird. In der Implementation von vbi_query_page sieht das so aus, dass kurz in den Cache geschaut wird ob die Seite drin ist. Ist das der Fall, wird sofort (von vbi_query_page aus) ein EV_PAGE verschickt. (Dass vbi_query_page evtl eine Referenz auf den Cache zurueckliefert, sollte ignoriert werden.) Ist die angefragte Seite nicht im Cache, brauch ich im Falle des /dev/vbi nichts zu machen, da sowieso alle Seiten Empfangen und per Broadcast an alle Clients verschickt werden. Puh, hab ich geschwafelt *g*. Ich hab dir mal ein kleines Beispiel angehaengt. Hmm, vielleicht sollte ich diese Mail noch gleich mit ins contrib-dir packen. Viel Spass beim Hacken, ET. alevt-v1.8.0/contrib/mini-alevt.xpm000066400000000000000000000007441345074102600172630ustar00rootroot00000000000000/* XPM */ static char * mini_alevt_xpm[] = { "15 14 8 1", " c #C71BC30BC71B", ". c #FFFFFFFFFFFF", "X c #000000000000", "o c #0000FFFF0000", "O c #FFFF00000000", "+ c #0000FFFFFFFF", "@ c #FFFFFFFF0000", "# c None", " ", " .............X", " .oXO++++X+++.X", " .XXXXXXXXXXX.X", " .XXoXoX@@@XX.X", " .XXoXoXX@XXX.X", " .XXoXoXX@XXX.X", " .XXXoXXX@XXX.X", " .XXXXXXXXXXX.X", " .OOXooX@@X++.X", " .............X", "XXXXXXXXXXXXXXX", "#### .....X####", "##XXXXXXXXXXX##"}; alevt-v1.8.0/contrib/patch-bttv-0.6.4000066400000000000000000000075641345074102600171410ustar00rootroot00000000000000diff -ru -x *.o driver-orig/bttv.c driver/bttv.c --- driver-orig/bttv.c Mon May 3 01:01:05 1999 +++ driver/bttv.c Wed Jun 2 00:39:18 1999 @@ -74,6 +74,15 @@ #define ioremap vremap #define iounmap vfree #endif +#if LINUX_VERSION_CODE < 0x02017f +static void schedule_timeout(int j) +{ + current->state = TASK_INTERRUPTIBLE; + current->timeout = jiffies + j; + schedule(); +} +#endif + #ifdef V4L2 #include "videodev2.h" @@ -673,6 +682,19 @@ } +static void reset_vbi_seq(struct bttv *btv) +{ + if (btv->vbibuf) + (*(u32 *)(btv->vbibuf + VBIBUF_SIZE - 4)) = 0; +} + +static void increment_vbi_seq(struct bttv *btv) +{ + if (btv->vbibuf) + (*(u32 *)(btv->vbibuf + VBIBUF_SIZE - 4))++; +} + + /* If Bt848a or Bt849, use PLL for PAL/SECAM and crystal for NTSC*/ /* Frequency = (F_input / PLL_X) * PLL_I.PLL_F/PLL_C @@ -791,6 +813,7 @@ AUDIO_EXTERN : AUDIO_TUNER); btaor(tvcards[btv->type].muxsel[input]>>4, ~tvcards[btv->type].gpiomask2, BT848_GPIO_DATA); + reset_vbi_seq(btv); } @@ -907,6 +930,8 @@ *(pe++)=FIX_BE(virt_to_bus(btv->risc_jmp+10)); DEBUG(printk(KERN_DEBUG "po: 0x%08x\n",(int)po)); DEBUG(printk(KERN_DEBUG "pe: 0x%08x\n",(int)pe)); + + reset_vbi_seq(btv); } int fmtbppx2[16] = { @@ -1665,6 +1690,7 @@ i2c_control_device(&(btv->i2c), I2C_DRIVERID_TUNER, TUNER_SET_RADIOFREQ,&fixme); } else { + reset_vbi_seq(btv); i2c_control_device(&(btv->i2c), I2C_DRIVERID_TUNER, TUNER_SET_TVFREQ,&fixme); } @@ -2728,6 +2754,7 @@ btv->vbip=VBIBUF_SIZE; btv->cap|=0x0c; bt848_set_risc_jmps(btv); + reset_vbi_seq(btv); MOD_INC_USE_COUNT; return 0; @@ -2746,6 +2773,13 @@ static int vbi_ioctl(struct video_device *dev, unsigned int cmd, void *arg) { + switch (cmd) + { + case BTTV_VERSION: + return BTTV_VERSION_CODE; + case BTTV_VBISIZE: + return VBIBUF_SIZE; + } return -EINVAL; } @@ -2855,6 +2889,8 @@ case VIDIOCSAUDIO: bttv_ioctl((struct video_device *)btv,cmd,arg); break; + case BTTV_VERSION: + return BTTV_VERSION_CODE; default: return -ENOIOCTLCMD; } @@ -3886,8 +3922,7 @@ if (stat&(1<<28)) { btv->vbip=0; - /* inc vbi frame count for detecting drops */ - (*(u32 *)&(btv->vbibuf[VBIBUF_SIZE - 4]))++; + increment_vbi_seq(btv); wake_up_interruptible(&btv->vbiq); } @@ -3961,6 +3996,7 @@ } if (astat&BT848_INT_HLOCK) { + reset_vbi_seq(btv); if ((dstat&BT848_DSTATUS_HLOC) || (btv->radio)) audio(btv, AUDIO_ON); else @@ -4142,7 +4178,9 @@ int result; unsigned char bus, devfn; struct bttv *btv; +#if defined(__powerpc__) u_int32_t cmd; +#endif bttv_num=0; diff -ru -x *.o driver-orig/bttv.h driver/bttv.h --- driver-orig/bttv.h Mon May 3 00:32:49 1999 +++ driver/bttv.h Tue Jun 1 22:20:48 1999 @@ -229,6 +229,7 @@ #define BTTV_BURST_OFF _IOR('v' , BASE_VIDIOCPRIVATE+5, int) #define BTTV_VERSION _IOR('v' , BASE_VIDIOCPRIVATE+6, int) #define BTTV_PICNR _IOR('v' , BASE_VIDIOCPRIVATE+7, int) +#define BTTV_VBISIZE _IOR('v' , BASE_VIDIOCPRIVATE+8, int) #define BTTV_UNKNOWN 0x00 diff -ru -x *.o driver-orig/msp3400.c driver/msp3400.c --- driver-orig/msp3400.c Fri Apr 16 08:25:45 1999 +++ driver/msp3400.c Tue Jun 1 22:36:24 1999 @@ -112,7 +112,7 @@ #endif #if LINUX_VERSION_CODE < 0x02017f -void schedule_timeout(int j) +static void schedule_timeout(int j) { current->timeout = jiffies + j; schedule(); diff -ru -x *.o driver-orig/tuner.c driver/tuner.c --- driver-orig/tuner.c Sat May 1 01:29:08 1999 +++ driver/tuner.c Tue Jun 1 22:36:49 1999 @@ -23,12 +23,15 @@ #endif #if LINUX_VERSION_CODE < 0x02017f -void schedule_timeout(int j) +static void schedule_timeout(int j) { current->state = TASK_INTERRUPTIBLE; current->timeout = jiffies + j; schedule(); } +#endif +#ifndef EXPORT_NO_SYMBOLS +#define EXPORT_NO_SYMBOLS #endif struct tuner alevt-v1.8.0/contrib/paul.fmt_page.c000066400000000000000000000131771345074102600173620ustar00rootroot00000000000000static void fmt_page(struct export *e, struct fmt_page *pg, struct vt_page *vtp) { char buf[16]; int x, y; u8 c, *p = vtp->data[0]; pg->dbl = 0; sprintf(buf, "\2%3x.%02x\7", vtp->pgno, vtp->subno & 0xff); strncpy(p,buf,8); for (y = 0; y < H; y++) { /* two variables for each attribute * new_attr -- information got from the latest char * here_attr -- value of the attribute for this xy position * So, if the attribute char is "Set-At" * then * { * here_attr=new_attr=attribute(latest_char); * ... processing ... (use here_attr !!!) * here_attr=new_attr; // <-- unneeded, * // but doesn't break the code * } * else // Set-After * { * new_attr=attribute(latest_char); * ... processing ... (use here_attr !!!) * here_attr=new_attr; * } * Attributes persist until changed by another attribute * or end of row */ u8 held_mosaic_char=' '; u8 dbl=0; /* set to 1 for double height page * (is used at the end of row processing) */ u8 new_gfx=0, here_gfx=0; // Start-of-row default condition u8 new_bg=0, here_bg=0; // Start-of-row default condition u8 new_fg=7, here_fg=7; // Start-of-row default condition u8 new_bln=0, here_bln=0; // Start-of-row default condition u8 new_dbl=0, here_dbl=0; // Start-of-row default condition u8 new_con=0, here_con=0; // Start-of-row default condition u8 here_sep=0; /* Start-of-row default condition * set/reset by 0x19,0x1a chars * Both (0x19,0x1a) are Set-At * so anyway (here_sep==new_sep) all the time */ u8 new_hld=0, here_hld=0; //hold attribute: u8 held_sep=0; for (x = 0; x < W; ++x) { pg->data[y][x].ch=' '; // case 0x00 ... 0x1f switch (c=*p++) { case 0x00 ... 0x07: //Alpha Colour Codes (foreground) //Set-After new_gfx=0; new_fg=c; // in this case (c == (c & 0x07)) new_con=0; break; case 0x08: //Flash //Set-After new_bln=EA_BLINK; break; case 0x09: //Steady //Set-At new_bln=here_bln=0; break; case 0x0a: //End Box //Set-After //!!! not processed break; case 0x0b: //Start Box (used with End Box to mark visible // part of page on transparent ones // eg. newsflash or subtitle ) //Set-After //!!! not processed break; case 0x0c: //Normal Size //Set-At new_dbl=here_dbl=0; break; case 0x0d: //Double Height //Set-After dbl=1; new_dbl=EA_DOUBLE; break; case 0x0e: //Double Width (for Presentation Level 2.5 and 3.5) //Set-After //!!! not processed break; case 0x0f: //Double Size (for Presentation Level 2.5 and 3.5) //Set-After //!!! not processed break; case 0x10 ... 0x17: //Mosaic Colour Codes //Set-After new_gfx=EA_GRAPHIC; new_fg= c & 0x07; new_con=0; break; case 0x18: //Conceal //Set-At here_con=new_con=EA_CONCEALED; break; case 0x19: //Contiguous Mosaic Graphics //Set-At here_sep=0; break; case 0x1a: //Separated Mosaic Graphics //Set-At here_sep=EA_SEPARATED; break; case 0x1b: //ESC (or Switch) //Set-After //!!! not processed break; case 0x1c: //Black Background //Set-At here_bg=new_bg=0; break; case 0x1d: //New Background //Set-At here_bg=new_bg=here_fg; break; case 0x1e: //Hold Mosaics //Set-At here_hld=new_hld=1; break; case 0x1f: //Release Mosaics //Set-After new_hld=0; break; // start of "... processing ..." default: //noncontrol characters pg->data[y][x].ch=c; /* **************************** */ /* special treating of sep * when in Hold-Mosaics mode * see the specs for details... */ if (c & (1<<5)) //why "6" bit set is (1<<5) ???????? { held_mosaic_char=c; held_sep=here_sep; } if (here_hld) //when in "hold" set 'here_sep' here: pg->data[y][x].attr|=here_sep; /* **************************** */ } //end of switch if (here_hld) c=held_mosaic_char; if ((here_gfx) && ((c & 0xa0) == 0x20)) pg->data[y][x].ch= c + ((c & 0x40) ? 32 : -32); if ((here_con) && (not e->reveal)) pg->data[y][x].ch=' '; pg->data[y][x].fg=here_fg; pg->data[y][x].bg=here_bg; if (here_hld) // special treating again... pg->data[y][x].attr=(here_dbl|here_gfx| here_bln|here_con); else // when not in "hold" set 'here_sep' here pg->data[y][x].attr=(here_dbl|here_gfx| here_bln|here_con|here_sep); // end of "... processing ..." here_gfx=new_gfx; here_fg=new_fg; here_bg=new_bg; here_bln=new_bln; here_dbl=new_dbl; here_con=new_con; here_hld=new_hld; } if (dbl) { pg->dbl |= 1 << y; for (x = 0; x < W; ++x) { if (~pg->data[y][x].attr & EA_DOUBLE) pg->data[y][x].attr |= EA_HDOUBLE; pg->data[y+1][x] = pg->data[y][x]; pg->data[y+1][x].ch = ' '; } y++;p+=40; } } } alevt-v1.8.0/contrib/paul.fmt_page.patch000066400000000000000000000202631345074102600202310ustar00rootroot00000000000000--- alevt-1.5.0.orig/export.c Fri Oct 8 01:52:41 1999 +++ alevt-1.5.0/export.c Fri Oct 15 09:11:20 1999 @@ -240,120 +240,220 @@ return p; } - static void fmt_page(struct export *e, struct fmt_page *pg, struct vt_page *vtp) { char buf[16]; int x, y; u8 c, *p = vtp->data[0]; - pg->dbl = 0; - - sprintf(buf, "\2%x.%02x\7", vtp->pgno, vtp->subno & 0xff); - + sprintf(buf, "\2%3x.%02x\7", vtp->pgno, vtp->subno & 0xff); + strncpy(p,buf,8); for (y = 0; y < H; y++) { - struct fmt_char c; - int last_ch = ' '; - int dbl = 0, hold = 0; - - c.fg = 7; - c.bg = 0; - c.attr = 0; + /* two variables for each attribute + * new_attr -- information got from the latest char + * here_attr -- value of the attribute for this xy position + * So, if the attribute char is "Set-At" + * then + * { + * here_attr=new_attr=attribute(latest_char); + * ... processing ... (use here_attr !!!) + * here_attr=new_attr; // <-- unneeded, + * // but doesn't break the code + * } + * else // Set-After + * { + * new_attr=attribute(latest_char); + * ... processing ... (use here_attr !!!) + * here_attr=new_attr; + * } + * Attributes persist until changed by another attribute + * or end of row + */ + u8 held_mosaic_char=' '; + u8 dbl=0; /* set to 1 for double height page + * (is used at the end of row processing) */ + + u8 new_gfx=0, here_gfx=0; // Start-of-row default condition + u8 new_bg=0, here_bg=0; // Start-of-row default condition + u8 new_fg=7, here_fg=7; // Start-of-row default condition + u8 new_bln=0, here_bln=0; // Start-of-row default condition + u8 new_dbl=0, here_dbl=0; // Start-of-row default condition + u8 new_con=0, here_con=0; // Start-of-row default condition + u8 here_sep=0; /* Start-of-row default condition + * set/reset by 0x19,0x1a chars + * Both (0x19,0x1a) are Set-At + * so anyway (here_sep==new_sep) all the time + */ + u8 new_hld=0, here_hld=0; + + //hold attribute: + u8 held_sep=0; - for (x = 0; x < W; ++x) + for (x = 0; x < W; ++x) { - c.ch = *p++; - if (y == 0 && x < 8) - c.ch = buf[x]; - switch (c.ch) + pg->data[y][x].ch=' '; // case 0x00 ... 0x1f + switch (c=*p++) { - case 0x00 ... 0x07: /* alpha + fg color */ - c.fg = c.ch & 7; - c.attr &= ~(EA_GRAPHIC | EA_SEPARATED | EA_CONCEALED); - goto ctrl; - case 0x08: /* flash */ - c.attr |= EA_BLINK; - goto ctrl; - case 0x09: /* steady */ - c.attr &= ~EA_BLINK; - goto ctrl; - case 0x0a: /* end box */ - case 0x0b: /* start box */ - goto ctrl; - case 0x0c: /* normal height */ - c.attr &= EA_DOUBLE; - goto ctrl; - case 0x0d: /* double height */ - c.attr |= EA_DOUBLE; - dbl = 1; - goto ctrl; - case 0x10 ... 0x17: /* gfx + fg color */ - c.fg = c.ch & 7; - c.attr |= EA_GRAPHIC; - c.attr &= ~EA_CONCEALED; - goto ctrl; - case 0x18: /* conceal */ - c.attr |= EA_CONCEALED; - goto ctrl; - case 0x19: /* contiguous gfx */ - c.attr &= ~EA_SEPARATED; - goto ctrl; - case 0x1a: /* separate gfx */ - c.attr |= EA_SEPARATED; - goto ctrl; - case 0x1c: /* black bf */ - c.bg = 0; - goto ctrl; - case 0x1d: /* new bg */ - c.bg = c.fg; - goto ctrl; - case 0x1e: /* hold gfx */ - hold = 1; - goto ctrl; - case 0x1f: /* release gfx */ - hold = 0; - goto ctrl; - - case 0x0e: /* SO */ - case 0x0f: /* SI */ - case 0x1b: /* ESC */ - c.ch = ' '; - break; - - ctrl: - c.ch = ' '; - if (hold && (c.attr & EA_GRAPHIC)) - c.ch = last_ch; - break; - } - if (c.attr & EA_GRAPHIC) - if ((c.ch & 0xa0) == 0x20) + case 0x00 ... 0x07: + //Alpha Colour Codes (foreground) + //Set-After + new_gfx=0; + new_fg=c; // in this case (c == (c & 0x07)) + new_con=0; + break; + case 0x08: + //Flash + //Set-After + new_bln=EA_BLINK; + break; + case 0x09: + //Steady + //Set-At + new_bln=here_bln=0; + break; + case 0x0a: + //End Box + //Set-After + //!!! not processed + break; + case 0x0b: + //Start Box (used with End Box to mark visible + // part of page on transparent ones + // eg. newsflash or subtitle ) + //Set-After + //!!! not processed + break; + case 0x0c: + //Normal Size + //Set-At + new_dbl=here_dbl=0; + break; + case 0x0d: + //Double Height + //Set-After + dbl=1; + new_dbl=EA_DOUBLE; + break; + case 0x0e: + //Double Width (for Presentation Level 2.5 and 3.5) + //Set-After + //!!! not processed + break; + case 0x0f: + //Double Size (for Presentation Level 2.5 and 3.5) + //Set-After + //!!! not processed + break; + case 0x10 ... 0x17: + //Mosaic Colour Codes + //Set-After + new_gfx=EA_GRAPHIC; + new_fg= c & 0x07; + new_con=0; + break; + case 0x18: + //Conceal + //Set-At + here_con=new_con=EA_CONCEALED; + break; + case 0x19: + //Contiguous Mosaic Graphics + //Set-At + here_sep=0; + break; + case 0x1a: + //Separated Mosaic Graphics + //Set-At + here_sep=EA_SEPARATED; + break; + case 0x1b: + //ESC (or Switch) + //Set-After + //!!! not processed + break; + case 0x1c: + //Black Background + //Set-At + here_bg=new_bg=0; + break; + case 0x1d: + //New Background + //Set-At + here_bg=new_bg=here_fg; + break; + case 0x1e: + //Hold Mosaics + //Set-At + here_hld=new_hld=1; + break; + case 0x1f: + //Release Mosaics + //Set-After + new_hld=0; + break; + + // start of "... processing ..." + + default: //noncontrol characters + pg->data[y][x].ch=c; + /* **************************** */ + /* special treating of sep + * when in Hold-Mosaics mode + * see the specs for details... + */ + if (c & (1<<5)) //why "6" bit set is (1<<5) ???????? { - last_ch = c.ch; - c.ch += (c.ch & 0x40) ? 32 : -32; + held_mosaic_char=c; + held_sep=here_sep; } - if (c.attr & EA_CONCEALED) - if (not e->reveal) - c.ch = ' '; - pg->data[y][x] = c; - } - if (dbl) - { - pg->dbl |= 1 << y; - for (x = 0; x < W; ++x) - { - if (~pg->data[y][x].attr & EA_DOUBLE) - pg->data[y][x].attr |= EA_HDOUBLE; - pg->data[y+1][x] = pg->data[y][x]; - pg->data[y+1][x].ch = ' '; - } - y++; - p += W; + if (here_hld) //when in "hold" set 'here_sep' here: + pg->data[y][x].attr|=here_sep; + /* **************************** */ + } //end of switch + + if (here_hld) c=held_mosaic_char; + + if ((here_gfx) && ((c & 0xa0) == 0x20)) + pg->data[y][x].ch= c + ((c & 0x40) ? 32 : -32); + + if ((here_con) && (not e->reveal)) + pg->data[y][x].ch=' '; + + pg->data[y][x].fg=here_fg; + pg->data[y][x].bg=here_bg; + + if (here_hld) // special treating again... + pg->data[y][x].attr=(here_dbl|here_gfx| + here_bln|here_con); + else // when not in "hold" set 'here_sep' here + pg->data[y][x].attr=(here_dbl|here_gfx| + here_bln|here_con|here_sep); + + // end of "... processing ..." + here_gfx=new_gfx; + here_fg=new_fg; + here_bg=new_bg; + here_bln=new_bln; + here_dbl=new_dbl; + here_con=new_con; + here_hld=new_hld; } + if (dbl) + { + pg->dbl |= 1 << y; + for (x = 0; x < W; ++x) + { + if (~pg->data[y][x].attr & EA_DOUBLE) + pg->data[y][x].attr |= EA_HDOUBLE; + pg->data[y+1][x] = pg->data[y][x]; + pg->data[y+1][x].ch = ' '; + } + y++;p+=40; + } } - pg->hid = pg->dbl << 1; + } int alevt-v1.8.0/contrib/pkt-8-30.c000066400000000000000000000057771345074102600160320ustar00rootroot00000000000000#/* gcc pkt-8-30.c -I.. ../vbi.o ../misc.o ../fdset.o ../hamm.o ../lang.o -DVERSION=\"0.0.1\" exec ./a.out #*/ #include #include #include #include "vt.h" #include "fdset.h" #include "vbi.h" #include "misc.h" int debug = 0; static void event(void *_, struct vt_event *ev) { switch (ev->type) { /* vbi may generate EV_PAGE, EV_HEADER, EV_XPACKET */ /* for event arguments see vt.h */ case EV_XPACKET: // misc paket { if (ev->i1 == 8 && ev->i2 == 30) // broadcast service packet { u8 *p = ev->p1; printf("designation: %x\n", p[0]); printf("initial page: %02x\n", p[1]); printf("initial subpage: %04x\n", p[5]*256 + p[3]); if (p[0]/2 == 0) { printf("network code: %04x\n", p[7]*256 + p[8]); printf("time offset: %c%d.%d\n", (p[9]&0x40)?'-':'+', p[9]/4%16, (p[9]&2)?5:0); printf("mod julian date: %05x\n", p[10]%16*65536+p[11]*256+p[12] - 0x11111); printf("universal time: %06x\n", p[13]*65536+p[14]*256+p[15] - 0x111111); printf("info: %.20s\n", p+20); } else { // programme identification data (VCRs & Co) } printf("\n"); } } } } static void usage(FILE *fp, int exit_val) { fprintf(fp, "usage: %s [options]\n", prgname); fprintf(fp, "\n" " Valid options:\tDefault:\n" " --help\n" " --version\n" " -vbi \n" ); exit(exit_val); } static int option(int argc, char **argv, int *ind, char **arg) { static struct { char *nam, *altnam; int arg; } opts[] = { { "-vbi", "-dev", 1 }, { "--version", "-v", 0 }, { "--help", "-h", 0 }, { "-newbttv", "-fuckbttv", 0 }, { "-oldbttv", "-old", 0 }, }; int i; if (*ind >= argc) return 0; *arg = argv[(*ind)++]; for (i = 0; i < NELEM(opts); ++i) if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam)) { if (opts[i].arg) if (*ind < argc) *arg = argv[(*ind)++]; else fatal("option %s requires an argument", *arg); return i+1; } if (**arg == '-') { fatal("%s: invalid option", *arg); usage(stderr, 1); } return -1; } void main(int argc, char **argv) { int big_buf = -1; char *vbi_name = "/dev/vbi"; struct vbi *vbi; int opt, ind; char *arg; setprgname(argv[0]); ind = 1; while (opt = option(argc, argv, &ind, &arg)) switch (opt) { case 1: // -vbi vbi_name = arg; break; case 2: // -version printf("AleVT-Date Version "VERSION"\n"); exit(0); case 3: // help usage(stdout, 0); break; case 4: //newbttv big_buf = 1; break; case 5: // oldbttv big_buf = 0; break; case -1: usage(stderr, 1); } fdset_init(fds); vbi = vbi_open(vbi_name, 0, 99, big_buf); // open device if (not vbi) fatal_ioerror(vbi_name); vbi_add_handler(vbi, event, 0); // register event handler for (;;) fdset_select(fds, -1); // call scheduler /* never reached */ vbi_del_handler(vbi, event, 0); vbi_close(vbi); exit(0); } alevt-v1.8.0/contrib/t1.c000066400000000000000000000025731345074102600151620ustar00rootroot00000000000000#/* gcc t1.c -I.. ../vbi.o ../misc.o ../fdset.o ../hamm.o ../lang.o -DVERSION=\"0.0.1\" exec ./a.out #*/ /* crude sample code to read vt-pages */ #include #include "vt.h" #include "fdset.h" #include "vbi.h" #include "misc.h" int debug = 0; static void event(int *quitflag, struct vt_event *ev) { switch (ev->type) { /* vbi may generate EV_PAGE, EV_HEADER, EV_XPACKET */ /* for event arguments see vt.h */ case EV_PAGE: // a complete new page { static int npages = 0; struct vt_page *vtp = ev->p1; printf("Got page %x/%x\n", vtp->pgno, vtp->subno); if (++npages >= 16) *quitflag = 1; // quit after 16 pages break; } case EV_HEADER: // a new title line (for running headers) case EV_XPACKET: // an extended packet break; } } int main(int argc, char **argv) { int big_buf = -1; // 0 for -oldbttv, 1 for -newbttv struct vbi *vbi; int quit = 0; fdset_init(fds); vbi = vbi_open("/dev/vbi", 0, 99, big_buf); // open device vbi_add_handler(vbi, event, &quit); // register event handler // this one isn't really neccessary (in /dev/vbi case!). // will always return 0 (nothing in cache yet). // Note the hex 0x100! vbi_query_page(vbi, 0x100, ANY_SUB); while (not quit) fdset_select(fds, -1); // call scheduler vbi_del_handler(vbi, event, &quit); vbi_close(vbi); exit(0); } alevt-v1.8.0/contrib/url-netscape.patch000066400000000000000000000047301345074102600201120ustar00rootroot00000000000000Message-ID: <19990906223940.A24779@sk.stg.sdm.de> Date: Mon, 6 Sep 1999 22:39:40 +0200 From: Sebastian Korff To: EdgarToernig Subject: alevt Hallo Edgar, Ich habe alevt-1.4.5 installiert. Beim Rumklicken im Videotext bin ich auf die Idee gekommen, alevt mit dem Browser zu verbinden, sodass man im Videotext auf eine URL klicken kann und diese dann im Browser geoeffnet wird. Entstanden ist dabei der nachstehende Patch. Dies ist ein Quick-and-Dirty-Hack !!! Sogar der Browser steht fest im Code! Ich dachte nur, ich schicke Dir das hier als kleine Anregung fuer zukuenftige Erweiterungen. Oder haeltst Du von dieser Idee nichts? Gruss, Sebastian --------8<-------------------8<------------------8<------------------- --- alevt-1.4.5/ui.c Thu Apr 29 22:42:03 1999 +++ ui.c Sat Sep 4 08:30:51 1999 @@ -181,6 +181,37 @@ } static int +chk_screen_www(u8 *p, int x, int *pgno, int *subno) +{ + int i,n=0; + p += x; + + for ( i = 0; p[i]; i++ ) + { + if ( (p[i] == '.') && (p[i-1] != '.') ) + n++; + else if ( isalnum( p[i] ) || ( p[i] == '/' ) || ( p[i] == ':' ) ) + ; + else if ( ( isspace(p[i]) || (!isgraph(p[i])) ) && ( n >= 2 ) ) + { + char buf [200]; + p[i] = 0; + sprintf( buf , + "netscape -remote \"openUrl(%s%s)\"" , + strstr(p,"://") ? "" : "http://" , + p + ); + system ( buf ); + return 1; + } + else + return 0; + } + return 0; +} + + +static int chk_screen_pgno(u8 *p, int x, int *pgno, int *subno) { p += x; @@ -236,10 +267,16 @@ return; } if (i >= -4) - if (chk_screen_pgno(buf, x+i, &n1, &n2)) { - new_or_query(w, n1, n2, new_win); - return; + if (chk_screen_pgno(buf, x+i, &n1, &n2)) + { + new_or_query(w, n1, n2, new_win); + return; + } + if (chk_screen_www(buf, x+i, &n1, &n2)) + { + return; + } } } } alevt-v1.8.0/contrib/vtwiz.pl000066400000000000000000000154211345074102600162060ustar00rootroot00000000000000#!/usr/local/bin/perl -w # # vtwiz, (c) 1999, j. borgert, borgert@theo-physik.uni-kiel.de # # purpose: ------------------------------------------ # # GUI for alevt by E. Toernig # # alevt itself is not capable of switching stations # so I wrote this script that greps ~./xawtv for # valid station names, uses set-tv to set one # selected via a listbox and fires up aletv with it. # # with aletv running, selecting another (different) # station leads to an explicit kill (ouch...) and # restart of alevt with the new one... so inventing # channel switching to alevt... # # you could also put in a page number by an entry # which is selected at startup... # # alevt is handled its own methods once it runs. # see alevt's documentation (page 900 or 'h' key) # for usage. # # # what you need: ------------------------------------ # - alevt (used for coding: 1.4.9) # - Tk (used for coding: 800.014, # but 400something should also work...) # - Proc::Simple (used for coding: 1.12) # (try CPAN www.cpan.org for the former two.) # - xawtv/set-tv (used for coding: 2.35) # - have xawtv up running and performed station scan # ( ~./xawtv has to exists) # - have set-tv working # (should if xawtv works) # - an by the way: have perl running (who has not?) # (used for coding: 5.005_03) # # # to do: # - add xawtv start up method # - prevent alevt from running when any other v4l app is running # - add options (default pages, mark stations that do have no VT) # - add capture like access to pages (by alevt-cap) # - ... # - suggestions? c above for e-mail # # --------------------------------------------------- # # have fun... # #------------- packages ----------------------------------------------- use Tk; use Proc::Simple; #------------- inits --------------------------------------------------- my $page = 100; my $alevt_commandline = "alevt"; my $alevt = Proc::Simple->new( ); #-------------- read'in stations --------------------------------------- # # get users homedir from environment # $homedir = $ENV{HOME}; open( XAWFILE, "$homedir/.xawtv" ) or die "Cannot open ~/.xawtv\n"; my @stations; LINE: while( ) { next LINE unless /\[(.+)\]/; # only take station names # (in square brakets brakes) push @stations, $1; } close XAWFILE; #----------------------------------- the GUI ---------------------------- my $top = MainWindow->new( -title => 'vtwiz' ); # # listbox to hold the stations # my $listbox = $top->ScrlListbox( -label => 'vtwiz, (c) 1999, j. borgert', -selectmode => 'single', -exportselection => 0 ); $listbox->pack( -side => 'top', -expand => 'yes', -fill => 'both' ); # # put station names into the listbox # for (@stations) { $listbox->insert( 'end', $_ ); } # # select the first entry (0) as default... # $listbox->selectionSet( 0 ); # # buttons ('fire up' and 'quit') # my $buttonframe = $top->Frame( ); my $firebutton = $buttonframe->Button( -text => 'Start alevt', -command => \&fire, -relief => 'groove' ); $firebutton->pack( -side => 'left' ); my $quitbutton = $buttonframe->Button( -text => 'Quit', -command => \&godown, -relief => 'groove' ); $quitbutton->pack( -side => 'right' ); $buttonframe->pack( -side => 'bottom', -expand => 'yes', -fill => 'x', -padx => 5, -pady => 5 ); # # page number entry. # change default page number at the top in # the 'inits' section. # my $pageframe = $top->Frame( ); my $pagelabel = $pageframe->Label( -text => 'page to start up with:', -justify => 'right' ); my $pageentry = $pageframe->Entry( -textvariable => \$page, -width => 3 ); $pagelabel->pack( -side => 'left', -expand => 'yes', -fill => 'x' ); $pageentry->pack( -side => 'left', -expand => 'no' ); $pageframe->pack( -side => 'bottom', -expand => 'yes', -fill => 'x', -padx => 5, -pady => 5 ); # # look after alevt and change button text if not running # $top->repeat( 1000, \&look_after_alevt ); # # what do u think? # MainLoop; #---------------------- subs ------------------------------------ # # sub to manage set-tv and alevt execution # sub fire { # # check for legal page numbers # which is defined bu the grace of the # script to be a three digit number # if( $page !~ /\d\d\d/ ) { mmsg( "illegal page number\n" ); return 0; } # # get the station... # my $station = $listbox->Getselected( ); mmsg( "no station selected yet" ) unless defined $station; if( defined $station ) { # # kill alevt if alredy running -> 'Change station' # if( $alevt->poll( ) ) { $alevt->kill( ) or die "Not been able to kill (bummer...)\n"; } # # perform set-tv action... # (not using Proc::Simple here to prevent # the set-tv messages from showing in the shell # or elsewhere... works well for just a little # v4l debug info still displayed... # heck, make an icon to fire vtwiz up # and u will not see it.) # my $commandline = "set-tv '$station' |"; my $output; open( SETTV, $commandline ) or die "Cannot run programm: $!"; while( ) { $output .= $_; } close( SETTV ); # output of set-tv is now in $output... # might be used for future status line or such thingys # # start up aletv by Proc::Simple (fork...) # $commandline = "$alevt_commandline $page"; unless( $alevt->poll( ) ) { $alevt->start( $commandline ) or die "Cannot start alevt\n"; $firebutton->configure( -text => 'Change station' ); } else { # should not happen... killed above... # but aren't we all a bit paranoid mmsg( "alevt is already running, nerd!" ); } } # # if anything went wrong turn the button to 'up' # unless( $alevt->poll( ) ) { $firebutton->configure( -text => 'Start alevt' ); } return 1; } # # kill alevt when I am killed... # (would live on otherwise... cause it has been # forked...) # sub godown { if( $alevt->poll( ) ) { $alevt->kill( ) or die "Not been able to kill (bummer...)\n"; } exit 0; } # # mmsg( message[, title] ); # creates new toplevel with title # for display of message # sub mmsg { my $msg = shift; my $tit = shift; $tit = 'error' unless defined $tit; my $toplevel = $top->Toplevel( -title => "$tit" ); $toplevel->Message( -text => "$msg", -width => '10c' )->pack( ); $toplevel->Button( -text => 'Ok', -command => sub { $toplevel->destroy( ) } )->pack( ); return 1; } # # called by repeat every 1000ms. # looks if alevt is still up (polling...) # if not turn button to 'up' again. # sub look_after_alevt { unless( $alevt->poll( ) ) { $firebutton->configure( -text => 'Start alevt' ); } return 1; } alevt-v1.8.0/contrib/vtxt20x24-latin-1.bdf.gz000066400000000000000000000063551345074102600205400ustar00rootroot00000000000000‹e‰7vtxt20x24-latin-1.bdfε]oΫΘ†ου+„ά+3K›w μΪFμmΣήiβ`$»ΕΦmχηW²δθΖdΙα!9ΜNΛ’^ΝΧsζλ½½;{sW]_έ­εkZ=ύc½yχωα?›Η‡Ο>nΎ<|ψτο/›?6ΏύώΗ—w7)6΄qfχύΖ‹ΝΗί{όΧ?ήϊψιύ†V·—ί®¥^;³ϋϋτηΧΏ\]\^ύp~ύv-Εώgb½Q«Ϋύ›ίΌΉΎΩΎΉ»άή®ύκζϊςκξώιhusωvϋΣα«7ΫΫλ~Ή»ΌΎΊ»]xό·ηχΉ?»-·; ώπθb{x¨VgΩΎ9ϋa{ΧΛ‹»wοΏΊ½9+whύ|µΊϋσωEµ½ΈΏΌ®Χ―¶>=>|XχΣγ―λ?ΏόγΓΗέυZ½~µΪ^]>νόρμΝνZ{Π±Έ~λ»?Δξyευ^ξZ¬nοHVέ£‹γϋο}~|η—w?έ¬ΔΣτΓξ«Ψ ®I§“tκ-½Κύ+χiH—'ι2ΆΤUU‰‚tu’®"J½Ϊ+ι®Oυdm}κ†ς²ts’n&kλiH·'ιv²¶†tw’ξ&kλiH/N‹ ΗυiG†—¥ϋ“t?αΈ‚t#1αΘ„x:plOB< Ι Gχi¨A<@© Ηχ$ΔΦ‘p„OB<€™ Ηψ$ΔΪ‘M>{mf βξΘ%Ώ3‹Ό£"ω Y<ωδsx^ρOδ³xfρ@x’’Ογ™Εγ¤L>“g„'UςΉ<³x <©“Οζ™ΕαI“|>Ο,OΪδσyfρ@x%Ο3‹Β“Eςω<³x <ι“ΟηyΕ+ <%’Οη™Εα)J>g„§df«ρ f³ψ%tΝήβπ3αUμζ*y ύSPΆ|ϊ΅ήIκπυόLQ~ »§ΎΙΨ’ΒSΜ„§B[…­=³:¬ΥA Οr«ηκp¨½Εα)?]o―J sνΓΒΣάsxΗZόre µo2|‡ήβπ41Wϋξ»{«? βπτ„„Χζkƒ[[Ο1΄Ϊαi5!ή¶τ­ΓYΧΑ­“xά|§ΐφqhƒx ^{,Έ9/8BrBΊ¶Ο"ϊuωxρ±P3–>Kε―5¨SΝh’W ½΄~`fO/?fΒ;sj¥wώnpΫΗλ…υ¬UΛΉ¨ΪΤFδ5α%$κ9έh“ 7ί’uσΚ~u\a½^,ΨOΧbHp£ ΌYΜE}υ®―κ9Ν[F^CΡ‰DδOΦσ‡V”&σ¶’CΩΙ¥•~η5ώ&ωH}τ]Q_δ#υΡlw©TΒpΞι@i[¨όH}dRiϋ]Χφ·}¤Ύq]/ΖΘψκΧτ–ΤGsΝσ YΓ4έ_P‘ ό> ύε#υ‘O²τ[8oΰ:>΅ωΙω¨7±¶–pν¦µΰχ"δ#υIZzΫο;Ϋ#‹³4¨oΊ[u-0Hζ¶Kh‚ARg'©Oμδ#υI›|¤>ιΖ<8qθ&©O (ύ8†&ωH}/ΐ«U>b π«η•Τ§hυΌς‘ϊ”\€o=―όΐΪV-ΐ»W>R π―η•Τ§Μ<μyε#υ)»{^ωH}Κ-ΐΛW>R*ΰfΟ+©OωψΩ³ΚG“ bφΌς‘ϊ4-ΐΣW>R– pµη•Τ§Υ|νyε#υ-ΐ-#φkk’Τ§ΝΌνyε#υi»w{^ωH}Ϊ-ΐίW>R.ΰpΟ+©Oϋxά³ΚGγ 2b.χΌς‘ϊ -ΐηW>R‘ pΊη•ΤgΤΌξyε#υ½·{^ωH}Ζ,ΐοW>R± pΌη•Τgά<οyε#υ™b®χΌς‘ϊ_€ο=«|4Σ v7 w”ρ.©!΄Σ ›ΫM-„†devς‘ϊlvϋϊΠTƒ¬λv®ι·sΪjΝn_kΝn_Zk··F‹i`tεguO#4Χ [dWϊH}Φη& 6Θ‰μδ#υΉ ©O΅ΔPΫ›ό¬φ{ƒε#υ9nκ+1„§ωΛ²„>3:τ—Τη²£>4Ϊ —έi΄Ϊ —υ΅Ω wΫhƒ™Ξ.φSΚGκs.»GκsΩQZnΛϊΠtƒμ¨m7¨Θn®7¨Θn®­7¨ΘϊΠ|ƒ†ΉoΨ§@‡I7Wμ¦&άv¨*Ζύ-\ΛBΑ-λn—δlΏρl³ExΌΝ½τ*‡¤;ΙGκ+²£>4ΰ "»Ή>΄ΰ bRκ+ƒ Nα›³Έ*xJψ{ε#υΩQΪpP‘υ΅ωμ¨­8(;/B3ΚΞƒΠƒ²σγ 4δ έ\ZrΟϊΠ”ƒb\9Z/ ‹sΡuΪ‘ΤγΛΡ}r3IωH}>;κCkςΉQDo)Dvς εΗP_³ά7­V΄ΨΐU¥Σ™KτζBfWϊ ε«μδk”―³“oPΎΙNΎEω6;ωε:ΧΧ†Η39³HτζΆΘ®τ=ΚΟϊΠ›CRvΤ‡ή’(;ωH}”υ΅7‡¤μ¨½9d7Gϋpe731DoIΩQzsHΚϊΠ›C’ΛN>ReG}θΝ!);κCoγΝΡσΡΧ3χόθΝ!evΤ‡ήRfG}θΝ!Ή½9κηψgY_ΛκhΒΩSΓ/Μw“ΤΗνΝQχΟ-F΄³ΟKτζμήΝk©ΘGκγφζh[ώLD>RΜϊΠ›CλΝ‘dι#υI?ΧQ¦Ήδ£7‡TΩΝυ΅7‡T‰ϊπ†K»-ΠΫleΦ$©Ϋ›#rάοξµ;ωΡ›C*•ΔΈ?¥|¤>¥“χ§”Τ§Lί”ς‘ϊΈ½9ϊ΄ύy–8Ρ›C*7_ΫI>R*ζkϋ3ΙGκSΩΝυ΅7‡ΤΩQzsHMά•_•§Μ‡“Άυή=nβ3B>RN’ϊΖιEo©“¤ΎQε#υι$©oTωH}:»^τζΪ¦½£–>RΞn®½9¤Ξn…½9¤φ3 |C–8Νυ΅7‡4b¦o>ωH}†fψζ“Τ7®7G’ς‘ϊLvϋϊΠ›CμNs 7‡4ί?υνbu}u·ϊ-ΤλLqalevt-v1.8.0/dllist.h000066400000000000000000000022711345074102600144710ustar00rootroot00000000000000#ifndef DLLIST_H #define DLLIST_H struct dl_node { struct dl_node *next; struct dl_node *prev; }; struct dl_head { struct dl_node *first; struct dl_node *null; struct dl_node *last; }; static inline struct dl_head * dl_init(struct dl_head *h) { h->first = (struct dl_node *)&h->null; h->null = 0; h->last = (struct dl_node *)&h->first; return h; } static inline struct dl_node * dl_remove(struct dl_node *n) { n->prev->next = n->next; n->next->prev = n->prev; return n; } static inline struct dl_node * dl_insert_after(struct dl_node *p, struct dl_node *n) { n->next = p->next; n->prev = p; p->next = n; n->next->prev = n; return n; } #define dl_empty(h) ((h)->first->next == 0) #define dl_insert_before(p, n) dl_insert_after((p)->prev, (n)) #define dl_insert_first(h, n) ({ struct dl_node *_n = (n); \ dl_insert_before((h)->first, _n); }) #define dl_insert_last(h, n) ({ struct dl_node *_n = (n); \ dl_insert_after((h)->last, _n); }) #define dl_remove_first(h) dl_remove((h)->first) // mustn't be empty! #define dl_remove_last(h) dl_remove((h)->last) // mustn't be empty! #endif /* DLLIST_H */ alevt-v1.8.0/dvb/000077500000000000000000000000001345074102600135765ustar00rootroot00000000000000alevt-v1.8.0/dvb/audio.h000066400000000000000000000106761345074102600150620ustar00rootroot00000000000000/* * audio.h * * Copyright (C) 2000 Ralph Metzler * & Marcus Metzler for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Lesser Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _DVBAUDIO_H_ #define _DVBAUDIO_H_ #ifdef __KERNEL__ #include #else #include #endif typedef enum { AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */ AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */ } audio_stream_source_t; typedef enum { AUDIO_STOPPED, /* Device is stopped */ AUDIO_PLAYING, /* Device is currently playing */ AUDIO_PAUSED /* Device is paused */ } audio_play_state_t; typedef enum { AUDIO_STEREO, AUDIO_MONO_LEFT, AUDIO_MONO_RIGHT, } audio_channel_select_t; typedef struct audio_status { int AV_sync_state; /* sync audio and video? */ int mute_state; /* audio is muted */ audio_play_state_t play_state; /* current playback state */ audio_stream_source_t stream_source; /* current stream source */ audio_channel_select_t channel_select; /* currently selected channel */ int bypass_mode; /* pass on audio data to */ } audio_status_t; /* separate decoder hardware */ typedef struct audio_mixer { unsigned int volume_left; unsigned int volume_right; // what else do we need? bass, pass-through, ... } audio_mixer_t; typedef struct audio_karaoke{ /* if Vocal1 or Vocal2 are non-zero, they get mixed */ int vocal1; /* into left and right t at 70% each */ int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/ int melody; /* mixed into the left channel and */ /* Vocal2 into the right channel at 100% each. */ /* if Melody is non-zero, the melody channel gets mixed*/ } audio_karaoke_t; /* into left and right */ typedef uint16_t audio_attributes_t; /* bits: descr. */ /* 15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, */ /* 12 multichannel extension */ /* 11-10 audio type (0=not spec, 1=language included) */ /* 9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) */ /* 7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, */ /* 5- 4 Sample frequency fs (0=48kHz, 1=96kHz) */ /* 2- 0 number of audio channels (n+1 channels) */ /* for GET_CAPABILITIES and SET_FORMAT, the latter should only set one bit */ #define AUDIO_CAP_DTS 1 #define AUDIO_CAP_LPCM 2 #define AUDIO_CAP_MP1 4 #define AUDIO_CAP_MP2 8 #define AUDIO_CAP_MP3 16 #define AUDIO_CAP_AAC 32 #define AUDIO_CAP_OGG 64 #define AUDIO_CAP_SDDS 128 #define AUDIO_CAP_AC3 256 #define AUDIO_STOP _IO('o', 1) #define AUDIO_PLAY _IO('o', 2) #define AUDIO_PAUSE _IO('o', 3) #define AUDIO_CONTINUE _IO('o', 4) #define AUDIO_SELECT_SOURCE _IO('o', 5) #define AUDIO_SET_MUTE _IO('o', 6) #define AUDIO_SET_AV_SYNC _IO('o', 7) #define AUDIO_SET_BYPASS_MODE _IO('o', 8) #define AUDIO_CHANNEL_SELECT _IO('o', 9) #define AUDIO_GET_STATUS _IOR('o', 10, audio_status_t) #define AUDIO_GET_CAPABILITIES _IOR('o', 11, unsigned int) #define AUDIO_CLEAR_BUFFER _IO('o', 12) #define AUDIO_SET_ID _IO('o', 13) #define AUDIO_SET_MIXER _IOW('o', 14, audio_mixer_t) #define AUDIO_SET_STREAMTYPE _IO('o', 15) #define AUDIO_SET_EXT_ID _IO('o', 16) #define AUDIO_SET_ATTRIBUTES _IOW('o', 17, audio_attributes_t) #define AUDIO_SET_KARAOKE _IOW('o', 18, audio_karaoke_t) #endif /* _DVBAUDIO_H_ */ alevt-v1.8.0/dvb/ca.h000066400000000000000000000055631345074102600143430ustar00rootroot00000000000000/* * ca.h * * Copyright (C) 2000 Ralph Metzler * & Marcus Metzler for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Lesser Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _CA_H_ #define _CA_H_ /* slot interface types and info */ typedef struct ca_slot_info_s { int num; /* slot number */ int type; /* CA interface this slot supports */ #define CA_CI 1 /* CI high level interface */ #define CA_CI_LINK 2 /* CI link layer level interface */ #define CA_CI_PHYS 4 /* CI physical layer level interface */ #define CA_SC 128 /* simple smart card interface */ unsigned int flags; #define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */ #define CA_CI_MODULE_READY 2 } ca_slot_info_t; /* descrambler types and info */ typedef struct ca_descr_info_s { unsigned int num; /* number of available descramblers (keys) */ unsigned int type; /* type of supported scrambling system */ #define CA_ECD 1 #define CA_NDS 2 #define CA_DSS 4 } ca_descr_info_t; typedef struct ca_cap_s { unsigned int slot_num; /* total number of CA card and module slots */ unsigned int slot_type; /* OR of all supported types */ unsigned int descr_num; /* total number of descrambler slots (keys) */ unsigned int descr_type; /* OR of all supported types */ } ca_cap_t; /* a message to/from a CI-CAM */ typedef struct ca_msg_s { unsigned int index; unsigned int type; unsigned int length; unsigned char msg[256]; } ca_msg_t; typedef struct ca_descr_s { unsigned int index; unsigned int parity; unsigned char cw[8]; } ca_descr_t; #define CA_RESET _IO('o', 128) #define CA_GET_CAP _IOR('o', 129, ca_cap_t) #define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t) #define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t) #define CA_GET_MSG _IOR('o', 132, ca_msg_t) #define CA_SEND_MSG _IOW('o', 133, ca_msg_t) #define CA_SET_DESCR _IOW('o', 134, ca_descr_t) #endif alevt-v1.8.0/dvb/dmx.h000066400000000000000000000076311345074102600145460ustar00rootroot00000000000000/* * dmx.h * * Copyright (C) 2000 Marcus Metzler * & Ralph Metzler for convergence integrated media GmbH * * This program 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. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _DMX_H_ #define _DMX_H_ #ifdef __KERNEL__ #include #else #include #endif #define DMX_FILTER_SIZE 16 typedef enum { DMX_OUT_DECODER, /* Streaming directly to decoder. */ DMX_OUT_TAP, /* Output going to a memory buffer */ /* (to be retrieved via the read command).*/ DMX_OUT_TS_TAP /* Output multiplexed into a new TS */ /* (to be retrieved by reading from the */ /* logical DVR device). */ } dmx_output_t; typedef enum { DMX_IN_FRONTEND, /* Input from a front-end device. */ DMX_IN_DVR /* Input from the logical DVR device. */ } dmx_input_t; typedef enum { DMX_PES_AUDIO0, DMX_PES_VIDEO0, DMX_PES_TELETEXT0, DMX_PES_SUBTITLE0, DMX_PES_PCR0, DMX_PES_AUDIO1, DMX_PES_VIDEO1, DMX_PES_TELETEXT1, DMX_PES_SUBTITLE1, DMX_PES_PCR1, DMX_PES_AUDIO2, DMX_PES_VIDEO2, DMX_PES_TELETEXT2, DMX_PES_SUBTITLE2, DMX_PES_PCR2, DMX_PES_AUDIO3, DMX_PES_VIDEO3, DMX_PES_TELETEXT3, DMX_PES_SUBTITLE3, DMX_PES_PCR3, DMX_PES_OTHER } dmx_pes_type_t; #define DMX_PES_AUDIO DMX_PES_AUDIO0 #define DMX_PES_VIDEO DMX_PES_VIDEO0 #define DMX_PES_TELETEXT DMX_PES_TELETEXT0 #define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0 #define DMX_PES_PCR DMX_PES_PCR0 typedef enum { DMX_SCRAMBLING_EV, DMX_FRONTEND_EV } dmx_event_t; typedef enum { DMX_SCRAMBLING_OFF, DMX_SCRAMBLING_ON } dmx_scrambling_status_t; typedef struct dmx_filter { uint8_t filter[DMX_FILTER_SIZE]; uint8_t mask[DMX_FILTER_SIZE]; uint8_t mode[DMX_FILTER_SIZE]; } dmx_filter_t; struct dmx_sct_filter_params { uint16_t pid; dmx_filter_t filter; uint32_t timeout; uint32_t flags; #define DMX_CHECK_CRC 1 #define DMX_ONESHOT 2 #define DMX_IMMEDIATE_START 4 #define DMX_KERNEL_CLIENT 0x8000 }; struct dmx_pes_filter_params { uint16_t pid; dmx_input_t input; dmx_output_t output; dmx_pes_type_t pes_type; uint32_t flags; }; struct dmx_event { dmx_event_t event; time_t timeStamp; union { dmx_scrambling_status_t scrambling; } u; }; typedef struct dmx_caps { uint32_t caps; int num_decoders; } dmx_caps_t; typedef enum { DMX_SOURCE_FRONT0 = 0, DMX_SOURCE_FRONT1, DMX_SOURCE_FRONT2, DMX_SOURCE_FRONT3, DMX_SOURCE_DVR0 = 16, DMX_SOURCE_DVR1, DMX_SOURCE_DVR2, DMX_SOURCE_DVR3, } dmx_source_t; #define DMX_START _IO('o',41) #define DMX_STOP _IO('o',42) #define DMX_SET_FILTER _IOW('o',43,struct dmx_sct_filter_params) #define DMX_SET_PES_FILTER _IOW('o',44,struct dmx_pes_filter_params) #define DMX_SET_BUFFER_SIZE _IO('o',45) #define DMX_GET_EVENT _IOR('o',46,struct dmx_event) #define DMX_GET_PES_PIDS _IOR('o',47,uint16_t) #define DMX_GET_CAPS _IOR('o',48,dmx_caps_t) #define DMX_SET_SOURCE _IOW('o',49,dmx_source_t) #endif /*_DMX_H_*/ alevt-v1.8.0/dvb/frontend.h000066400000000000000000000164601345074102600155750ustar00rootroot00000000000000/* * frontend.h * * Copyright (C) 2000 Marcus Metzler * Ralph Metzler * Holger Waechtler * Andre Draszik * for convergence integrated media GmbH * * This program 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. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _FRONTEND_H_ #define _FRONTEND_H_ #ifdef __KERNEL__ #include #else #include #endif typedef enum { FE_QPSK, FE_QAM, FE_OFDM } fe_type_t; typedef enum { FE_IS_STUPID = 0, FE_CAN_INVERSION_AUTO = 0x1, FE_CAN_FEC_1_2 = 0x2, FE_CAN_FEC_2_3 = 0x4, FE_CAN_FEC_3_4 = 0x8, FE_CAN_FEC_4_5 = 0x10, FE_CAN_FEC_5_6 = 0x20, FE_CAN_FEC_6_7 = 0x40, FE_CAN_FEC_7_8 = 0x80, FE_CAN_FEC_8_9 = 0x100, FE_CAN_FEC_AUTO = 0x200, FE_CAN_QPSK = 0x400, FE_CAN_QAM_16 = 0x800, FE_CAN_QAM_32 = 0x1000, FE_CAN_QAM_64 = 0x2000, FE_CAN_QAM_128 = 0x4000, FE_CAN_QAM_256 = 0x8000, FE_CAN_QAM_AUTO = 0x10000, FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000, FE_CAN_BANDWIDTH_AUTO = 0x40000, FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, FE_CAN_HIERARCHY_AUTO = 0x100000, FE_CAN_MUTE_TS = 0x80000000 } fe_caps_t; struct dvb_frontend_info { char name[128]; fe_type_t type; uint32_t frequency_min; uint32_t frequency_max; uint32_t frequency_stepsize; uint32_t frequency_tolerance; uint32_t symbol_rate_min; uint32_t symbol_rate_max; uint32_t symbol_rate_tolerance; /* ppm */ uint32_t notifier_delay; /* ms */ fe_caps_t caps; }; /** * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for * the meaning of this struct... */ struct dvb_diseqc_master_cmd { uint8_t msg [6]; /* { framing, address, command, data [3] } */ uint8_t msg_len; /* valid values are 3...6 */ }; struct dvb_diseqc_slave_reply { uint8_t msg [4]; /* { framing, data [3] } */ uint8_t msg_len; /* valid values are 0...4, 0 means no msg */ int timeout; /* return from ioctl after timeout ms with */ }; /* errorcode when no message was received */ typedef enum { SEC_VOLTAGE_13, SEC_VOLTAGE_18 } fe_sec_voltage_t; typedef enum { SEC_TONE_ON, SEC_TONE_OFF } fe_sec_tone_mode_t; typedef enum { SEC_MINI_A, SEC_MINI_B } fe_sec_mini_cmd_t; typedef enum { FE_HAS_SIGNAL = 0x01, /* found something above the noise level */ FE_HAS_CARRIER = 0x02, /* found a DVB signal */ FE_HAS_VITERBI = 0x04, /* FEC is stable */ FE_HAS_SYNC = 0x08, /* found sync bytes */ FE_HAS_LOCK = 0x10, /* everything's working... */ FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */ FE_REINIT = 0x40 /* frontend was reinitialized, */ } fe_status_t; /* application is recommned to reset */ /* DiSEqC, tone and parameters */ typedef enum { INVERSION_OFF, INVERSION_ON, INVERSION_AUTO } fe_spectral_inversion_t; typedef enum { FEC_NONE = 0, FEC_1_2, FEC_2_3, FEC_3_4, FEC_4_5, FEC_5_6, FEC_6_7, FEC_7_8, FEC_8_9, FEC_AUTO } fe_code_rate_t; typedef enum { QPSK, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256, QAM_AUTO } fe_modulation_t; typedef enum { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_AUTO } fe_transmit_mode_t; typedef enum { BANDWIDTH_8_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_6_MHZ, BANDWIDTH_AUTO } fe_bandwidth_t; typedef enum { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4, GUARD_INTERVAL_AUTO } fe_guard_interval_t; typedef enum { HIERARCHY_NONE, HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_AUTO } fe_hierarchy_t; struct dvb_qpsk_parameters { uint32_t symbol_rate; /* symbol rate in Symbols per second */ fe_code_rate_t fec_inner; /* forward error correction (see above) */ }; struct dvb_qam_parameters { uint32_t symbol_rate; /* symbol rate in Symbols per second */ fe_code_rate_t fec_inner; /* forward error correction (see above) */ fe_modulation_t modulation; /* modulation type (see above) */ }; struct dvb_ofdm_parameters { fe_bandwidth_t bandwidth; fe_code_rate_t code_rate_HP; /* high priority stream code rate */ fe_code_rate_t code_rate_LP; /* low priority stream code rate */ fe_modulation_t constellation; /* modulation type (see above) */ fe_transmit_mode_t transmission_mode; fe_guard_interval_t guard_interval; fe_hierarchy_t hierarchy_information; }; struct dvb_frontend_parameters { uint32_t frequency; /* (absolute) frequency in Hz for QAM/OFDM */ /* intermediate frequency in kHz for QPSK */ fe_spectral_inversion_t inversion; union { struct dvb_qpsk_parameters qpsk; struct dvb_qam_parameters qam; struct dvb_ofdm_parameters ofdm; } u; }; struct dvb_frontend_event { fe_status_t status; struct dvb_frontend_parameters parameters; }; #define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info) #define FE_DISEQC_RESET_OVERLOAD _IO('o', 62) #define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd) #define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply) #define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */ #define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */ #define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */ #define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */ #define FE_READ_STATUS _IOR('o', 69, fe_status_t) #define FE_READ_BER _IOR('o', 70, uint32_t) #define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, uint16_t) #define FE_READ_SNR _IOR('o', 72, uint16_t) #define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, uint32_t) #define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters) #define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters) #define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event) #endif /*_FRONTEND_H_*/ alevt-v1.8.0/dvb/net.h000066400000000000000000000023471345074102600145430ustar00rootroot00000000000000/* * net.h * * Copyright (C) 2000 Marcus Metzler * & Ralph Metzler for convergence integrated media GmbH * * This program 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. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _DVBNET_H_ #define _DVBNET_H_ #ifdef __KERNEL__ #include #else #include #endif struct dvb_net_if { uint16_t pid; uint16_t if_num; }; #define NET_ADD_IF _IOWR('o', 52, struct dvb_net_if) #define NET_REMOVE_IF _IO('o', 53) #endif /*_DVBNET_H_*/ alevt-v1.8.0/dvb/osd.h000066400000000000000000000102271345074102600145360ustar00rootroot00000000000000/* * osd.h * * Copyright (C) 2001 Ralph Metzler * & Marcus Metzler for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Lesser Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _DVBOSD_H_ #define _DVBOSD_H_ typedef enum { // All functions return -2 on "not open" OSD_Close=1, // () // Disables OSD and releases the buffers // returns 0 on success OSD_Open, // (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0)) // Opens OSD with this size and bit depth // returns 0 on success, -1 on DRAM allocation error, -2 on "already open" OSD_Show, // () // enables OSD mode // returns 0 on success OSD_Hide, // () // disables OSD mode // returns 0 on success OSD_Clear, // () // Sets all pixel to color 0 // returns 0 on success OSD_Fill, // (color) // Sets all pixel to color // returns 0 on success OSD_SetColor, // (color,R{x0},G{y0},B{x1},opacity{y1}) // set palette entry to , and apply // R,G,B: 0..255 // R=Red, G=Green, B=Blue // opacity=0: pixel opacity 0% (only video pixel shows) // opacity=1..254: pixel opacity as specified in header // opacity=255: pixel opacity 100% (only OSD pixel shows) // returns 0 on success, -1 on error OSD_SetPalette, // (firstcolor{color},lastcolor{x0},data) // Set a number of entries in the palette // sets the entries "firstcolor" through "lastcolor" from the array "data" // data has 4 byte for each color: // R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel OSD_SetTrans, // (transparency{color}) // Sets transparency of mixed pixel (0..15) // returns 0 on success OSD_SetPixel, // (x0,y0,color) // sets pixel , to color number // returns 0 on success, -1 on error OSD_GetPixel, // (x0,y0) // returns color number of pixel ,, or -1 OSD_SetRow, // (x0,y0,x1,data) // fills pixels x0,y through x1,y with the content of data[] // returns 0 on success, -1 on clipping all pixel (no pixel drawn) OSD_SetBlock, // (x0,y0,x1,y1,increment{color},data) // fills pixels x0,y0 through x1,y1 with the content of data[] // inc contains the width of one line in the data block, // inc<=0 uses blockwidth as linewidth // returns 0 on success, -1 on clipping all pixel OSD_FillRow, // (x0,y0,x1,color) // fills pixels x0,y through x1,y with the color // returns 0 on success, -1 on clipping all pixel OSD_FillBlock, // (x0,y0,x1,y1,color) // fills pixels x0,y0 through x1,y1 with the color // returns 0 on success, -1 on clipping all pixel OSD_Line, // (x0,y0,x1,y1,color) // draw a line from x0,y0 to x1,y1 with the color // returns 0 on success OSD_Query, // (x0,y0,x1,y1,xasp{color}}), yasp=11 // fills parameters with the picture dimensions and the pixel aspect ratio // returns 0 on success OSD_Test, // () // draws a test picture. for debugging purposes only // returns 0 on success // TODO: remove "test" in final version OSD_Text, // (x0,y0,size,color,text) OSD_SetWindow, // (x0) set window with number 0 * for convergence integrated media GmbH * * This program 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. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _VERSION_H_ #define _VERSION_H_ #define DVB_API_VERSION 3 #endif /*_VERSION_H_*/ alevt-v1.8.0/dvb/video.h000066400000000000000000000144531345074102600150640ustar00rootroot00000000000000/* * video.h * * Copyright (C) 2000 Marcus Metzler * & Ralph Metzler for convergence integrated media GmbH * * This program 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. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _DVBVIDEO_H_ #define _DVBVIDEO_H_ #ifdef __KERNEL__ #include #else #include #endif typedef enum { VIDEO_FORMAT_4_3, /* Select 4:3 format */ VIDEO_FORMAT_16_9 /* Select 16:9 format. */ } video_format_t; typedef enum { VIDEO_SYSTEM_PAL, VIDEO_SYSTEM_NTSC, VIDEO_SYSTEM_PALN, VIDEO_SYSTEM_PALNc, VIDEO_SYSTEM_PALM, VIDEO_SYSTEM_NTSC60, VIDEO_SYSTEM_PAL60, VIDEO_SYSTEM_PALM60 } video_system_t; typedef enum { VIDEO_PAN_SCAN, /* use pan and scan format */ VIDEO_LETTER_BOX, /* use letterbox format */ VIDEO_CENTER_CUT_OUT /* use center cut out format */ } video_displayformat_t; typedef enum { VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */ VIDEO_SOURCE_MEMORY /* If this source is selected, the stream comes from the user through the write system call */ } video_stream_source_t; typedef enum { VIDEO_STOPPED, /* Video is stopped */ VIDEO_PLAYING, /* Video is currently playing */ VIDEO_FREEZED /* Video is freezed */ } video_play_state_t; struct video_event { int32_t type; time_t timestamp; union { video_format_t video_format; } u; }; struct video_status { int video_blank; /* blank video on freeze? */ video_play_state_t play_state; /* current state of playback */ video_stream_source_t stream_source; /* current source (demux/memory) */ video_format_t video_format; /* current aspect ratio of stream*/ video_displayformat_t display_format;/* selected cropping mode */ }; struct video_still_picture { char *iFrame; /* pointer to a single iframe in memory */ int32_t size; }; typedef struct video_highlight { int active; /* 1=show highlight, 0=hide highlight */ uint8_t contrast1; /* 7- 4 Pattern pixel contrast */ /* 3- 0 Background pixel contrast */ uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */ /* 3- 0 Emphasis pixel-1 contrast */ uint8_t color1; /* 7- 4 Pattern pixel color */ /* 3- 0 Background pixel color */ uint8_t color2; /* 7- 4 Emphasis pixel-2 color */ /* 3- 0 Emphasis pixel-1 color */ uint32_t ypos; /* 23-22 auto action mode */ /* 21-12 start y */ /* 9- 0 end y */ uint32_t xpos; /* 23-22 button color number */ /* 21-12 start x */ /* 9- 0 end x */ } video_highlight_t; typedef struct video_spu { int active; int stream_id; } video_spu_t; typedef struct video_spu_palette { /* SPU Palette information */ int length; uint8_t *palette; } video_spu_palette_t; typedef struct video_navi_pack { int length; /* 0 ... 1024 */ uint8_t data[1024]; } video_navi_pack_t; typedef uint16_t video_attributes_t; /* bits: descr. */ /* 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) */ /* 13-12 TV system (0=525/60, 1=625/50) */ /* 11-10 Aspect ratio (0=4:3, 3=16:9) */ /* 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca */ /* 7 line 21-1 data present in GOP (1=yes, 0=no) */ /* 6 line 21-2 data present in GOP (1=yes, 0=no) */ /* 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 */ /* 2 source letterboxed (1=yes, 0=no) */ /* 0 film/camera mode (0=camera, 1=film (625/50 only)) */ /* bit definitions for capabilities: */ /* can the hardware decode MPEG1 and/or MPEG2? */ #define VIDEO_CAP_MPEG1 1 #define VIDEO_CAP_MPEG2 2 /* can you send a system and/or program stream to video device? (you still have to open the video and the audio device but only send the stream to the video device) */ #define VIDEO_CAP_SYS 4 #define VIDEO_CAP_PROG 8 /* can the driver also handle SPU, NAVI and CSS encoded data? (CSS API is not present yet) */ #define VIDEO_CAP_SPU 16 #define VIDEO_CAP_NAVI 32 #define VIDEO_CAP_CSS 64 #define VIDEO_STOP _IO('o', 21) #define VIDEO_PLAY _IO('o', 22) #define VIDEO_FREEZE _IO('o', 23) #define VIDEO_CONTINUE _IO('o', 24) #define VIDEO_SELECT_SOURCE _IO('o', 25) #define VIDEO_SET_BLANK _IO('o', 26) #define VIDEO_GET_STATUS _IOR('o', 27, struct video_status) #define VIDEO_GET_EVENT _IOR('o', 28, struct video_event) #define VIDEO_SET_DISPLAY_FORMAT _IO('o', 29) #define VIDEO_STILLPICTURE _IOW('o', 30, struct video_still_picture) #define VIDEO_FAST_FORWARD _IO('o', 31) #define VIDEO_SLOWMOTION _IO('o', 32) #define VIDEO_GET_CAPABILITIES _IOR('o', 33, unsigned int) #define VIDEO_CLEAR_BUFFER _IO('o', 34) #define VIDEO_SET_ID _IO('o', 35) #define VIDEO_SET_STREAMTYPE _IO('o', 36) #define VIDEO_SET_FORMAT _IO('o', 37) #define VIDEO_SET_SYSTEM _IO('o', 38) #define VIDEO_SET_HIGHLIGHT _IOW('o', 39, video_highlight_t) #define VIDEO_SET_SPU _IOW('o', 50, video_spu_t) #define VIDEO_SET_SPU_PALETTE _IOW('o', 51, video_spu_palette_t) #define VIDEO_GET_NAVI _IOR('o', 52, video_navi_pack_t) #define VIDEO_SET_ATTRIBUTES _IO('o', 53) #endif /*_DVBVIDEO_H_*/ alevt-v1.8.0/edit.c000066400000000000000000000171021345074102600141150ustar00rootroot00000000000000#include #include #include #include "vt.h" #include "misc.h" #include "xio.h" #include "vbi.h" #include "edit.h" static void edwin_event(struct edwin *w, struct vt_event *ev); static void cursor(struct edwin *w, int x, int y) { u8 buf0[40]; u8 buf1[40]; u8 buf2[32]; if (w->edline) return; if (x < 0 || x >= W || y < 0 || y >= H) return; if (y == 0 && x < 8) return; xio_get_line(w->xw, 0, buf0); xio_get_line(w->xw, y, buf1); sprintf(buf2, "%2d\3%02x \7 ", y, buf1[x]); buf2[6] = "CI"[w->mode]; memcpy(buf0, buf2, 8); xio_put_line(w->xw, 0, buf0); xio_set_cursor(w->xw, w->x = x, w->y = y); } static void adv_cursor(struct edwin *w) { if (w->x < W-1) cursor(w, w->x+1, w->y); else if (w->y < H-1) cursor(w, 0, w->y+1); else cursor(w, 8, 0); } static void set_char(struct edwin *w, int c) { u8 buf[40]; xio_get_line(w->xw, w->y, buf); buf[w->x] = c; xio_put_line(w->xw, w->y, buf); } static int get_char(struct edwin *w) { u8 buf[40]; xio_get_line(w->xw, w->y, buf); return buf[w->x]; } static void set_gfx(struct edwin *w, int i) { int c = get_char(w); if ((c & 0xa0) != 0x20) c = 0x20; switch (i) { case 1: c ^= 0x10; break; case 2: c ^= 0x40; break; case 4: c ^= 0x04; break; case 5: c ^= 0x08; break; case 7: c ^= 0x01; break; case 8: c ^= 0x02; break; case 0: c = 0x20; break; case 9: c = 0x7f; break; case 3: c ^= 0x5f; break; case 6: c ^= 0x5f; break; } set_char(w, c); } static void set_mode(struct edwin *w, int on, int off) { u8 buf[40]; int x, c; xio_get_line(w->xw, w->y, buf); for (c = x = 0; x <= w->x; ++x) if (buf[x] == on || buf[x] == off) c = buf[x]; if (c == on) set_char(w, off); else set_char(w, on); } static void del_char(struct edwin *w) { u8 buf[40]; int x; xio_get_line(w->xw, w->y, buf); for (x = w->x; x < W-1; ++x) buf[x] = buf[x+1]; buf[x] = ' '; xio_put_line(w->xw, w->y, buf); } static void ins_char(struct edwin *w, int c) { u8 buf[40]; int x, t; xio_get_line(w->xw, w->y, buf); for (x = w->x; x < W; ++x) t = buf[x], buf[x] = c, c = t; xio_put_line(w->xw, w->y, buf); } static void del_line(struct edwin *w) { u8 buf[40]; int y; for (y = w->y; y < H-1; ++y) { xio_get_line(w->xw, y+1, buf); xio_put_line(w->xw, y, buf); } } static void ins_line(struct edwin *w) { u8 buf[40]; u8 buf2[40]; int y; memset(buf2, ' ', sizeof(buf2)); for (y = w->y; y < H; ++y) { xio_get_line(w->xw, y, buf); xio_put_line(w->xw, y, buf2); memcpy(buf2, buf, sizeof(buf2)); } } static void do_save(struct edwin *w, u8 *name) { u8 buf[40]; int x, y; FILE *fp; w->edline = 0; xio_put_line(w->xw, 24, w->tmpbuf); cursor(w, w->x, w->y); if (name == 0 || *name == 0) return; fp = fopen(name, "w"); if (fp == 0) { ioerror(name); return; } for (y = 0; y < 25; ++y) { xio_get_line(w->xw, y, buf); if (y == 0) memset(buf, ' ', 8); if (y == 0) fprintf(fp, "#ifndef HELP_HEADER\n"); if (y == 5) fprintf(fp, "#else\nHELP_HEADER\n#endif\n"); fprintf(fp, "\""); for (x = 0; x < 40; ++x) if ((buf[x] & 0x7f) < 0x20 || buf[x] == 0x7f || buf[x] == '"') { if (x == 39 || buf[x+1] < '0' || buf[x+1] > '9') fprintf(fp, "\\%o", buf[x]); else fprintf(fp, "\\%03o", buf[x]); } else fprintf(fp, "%c", buf[x]); fprintf(fp, "\",\n"); } fclose(fp); error("%s dumped", name); } static void save(struct edwin *w) { u8 name[64]; if (w->subno == ANY_SUB) sprintf(name, "vt%03x.out", w->pgno); else sprintf(name, "vt%03x-%02x.out", w->pgno, w->subno & 0xff); xio_get_line(w->xw, 24, w->tmpbuf); w->edline = edline_new(w->xw, "Save as:\2", name, do_save, w); } struct edwin * edwin_new(struct xio *xio, struct vbi *vbi, int pgno, int subno) { struct edwin *w; struct vt_page *vtp; u8 buf[64]; int i; if (not(w = malloc(sizeof(*w)))) goto fail1; if (not(w->xw = xio_open_win(xio, 0))) goto fail2; w->pgno = pgno; w->subno = subno; vtp = vbi_query_page(vbi, pgno, subno); if (vtp) for (i = 0; i < 25; ++i) xio_put_line(w->xw, i, vtp->data[i]); else xio_clear_win(w->xw); w->mode = 1; w->edline = 0; if (w->subno == ANY_SUB) sprintf(buf, "Editor %03x", w->pgno); else sprintf(buf, "Editor %03x/%x", w->pgno, w->subno); xio_title(w->xw, buf); xio_set_concealed(w->xw, w->reveal = 1); xio_set_handler(w->xw, edwin_event, w); cursor(w, W/2, H/2); return w; fail2: free(w); fail1: return 0; } static void edwin_close(struct edwin *w) { if (w->edline) edline_abort(w->edline); xio_close_win(w->xw, 1); free(w); } static int ins_key(struct edwin *w, int key, int shift) { switch (key) { case '\17': /* ^O for the bullet */ key = 0x7f; // fall through case 0x20 ... 0x7e: case 0xa0 ... 0xff: set_char(w, key); adv_cursor(w); return 1; case '\t': w->mode = 0; return 2; } return 0; } static int cmd_key(struct edwin *w, int key, int shift) { switch (key) { case '\e': case 'q': edwin_close(w); return 1; case '\r': case '\n': w->x = W; adv_cursor(w); return 1; case '\t': w->mode = 1; return 2; case KEY_F(1): save(w); return 1; case KEY_INS: if (shift) ins_line(w); else ins_char(w, ' '); return 2; case '\b': if (shift || w->x == 0) return 0; w->x--; //fall through case 0x7f: case KEY_DEL: if (shift) del_line(w); else del_char(w); return 2; case KEY_LEFT: cursor(w, w->x - 1, w->y); return 1; case KEY_RIGHT: cursor(w, w->x + 1, w->y); return 1; case KEY_UP: cursor(w, w->x, w->y - 1); return 1; case KEY_DOWN: cursor(w, w->x, w->y + 1); return 1; case 'k': /*black*/ set_char(w, 0x00); return 2; case 'K': set_char(w, 0x10); return 2; case 'r': /*red*/ set_char(w, 0x01); return 2; case 'R': set_char(w, 0x11); return 2; case 'g': /*green*/ set_char(w, 0x02); return 2; case 'G': set_char(w, 0x12); return 2; case 'y': /*yellow*/ set_char(w, 0x03); return 2; case 'Y': set_char(w, 0x13); return 2; case 'b': /*blue*/ set_char(w, 0x04); return 2; case 'B': set_char(w, 0x14); return 2; case 'v': /*violet*/ set_char(w, 0x05); return 2; case 'V': set_char(w, 0x15); return 2; case 'c': /*cyan*/ set_char(w, 0x06); return 2; case 'C': set_char(w, 0x16); return 2; case 'w': /*white*/ set_char(w, 0x07); return 2; case 'W': set_char(w, 0x17); return 2; case 's': /*new bg*/ set_char(w, 0x1d); return 2; case 'S': /*blk bg*/ set_char(w, 0x1c); return 2; case 'e': /*concealed*/ set_char(w, 0x18); return 2; case 'E': xio_set_concealed(w->xw, w->reveal ^= 1); return 1; case '0' ... '9': set_gfx(w, key - '0'); return 2; case 'f': /*flash*/ set_mode(w, 0x08, 0x09); return 2; case 'd': /*dbl*/ set_mode(w, 0x0d, 0x0c); return 2; case 'h': /*hold gfx*/ set_mode(w, 0x1e, 0x1f); return 2; case 'x': /*box*/ set_mode(w, 0x0b, 0x0a); return 2; case ' ': set_char(w, key); return 2; } return 0; } static void edwin_event(struct edwin *w, struct vt_event *ev) { int i; switch (ev->type) { case EV_CLOSE: edwin_close(w); break; case EV_KEY: i = 0; if (w->mode == 1) i = ins_key(w, ev->i1, ev->i2); if (not i) i |= cmd_key(w, ev->i1, ev->i2); if (i & 2) cursor(w, w->x, w->y); if (i == 0) xio_bell(w->xw); break; case EV_MOUSE: cursor(w, ev->i3, ev->i4); break; } } alevt-v1.8.0/edit.h000066400000000000000000000006251345074102600141240ustar00rootroot00000000000000#ifndef EDIT_H #define EDIT_H #include "vt.h" #include "xio.h" #include "edline.h" struct edwin { struct xio_win *xw; int pgno, subno; int x, y; // cursor pos int reveal; int mode; // insert mode struct edline *edline; u8 tmpbuf[40]; // to hold the bottom line while edline active }; struct edwin *edwin_new(struct xio *xio, struct vbi *vbi, int pgno, int subno); #endif alevt-v1.8.0/edline.c000066400000000000000000000051621345074102600144330ustar00rootroot00000000000000#include #include #include "vt.h" #include "misc.h" #include "xio.h" #include "edline.h" static void do_exit(struct edline *el, u8 *buf) { xio_set_cursor(el->xw, 999, 999); xio_set_handler(el->xw, el->old_handler, el->old_data); el->exit_func(el->exit_data, buf); free(el); } static void redraw(struct edline *el) { u8 buf[40]; u8 *p; int l; p = el->buf; l = el->len; if (l > 39 - el->plen) { l = 39 - el->plen; p = el->buf + el->len - l; } memset(buf, ' ', sizeof(buf)); memcpy(buf, el->prompt, el->plen); memcpy(buf + el->plen, p, l); xio_set_cursor(el->xw, el->plen + l, 24); xio_put_line(el->xw, 24, buf); } static void ev_handler(struct edline *el, struct vt_event *ev) { switch (ev->type) { case EV_KEY: switch (ev->i1) { case '\e': case '\3': do_exit(el, 0); return; case '\r': case '\n': el->buf[el->len] = 0; do_exit(el, el->buf); return; case KEY_INS: xio_query_selection(el->xw); return; case KEY_LEFT: case '\b': if (el->len) { el->len--; redraw(el); } else do_exit(el, 0); return; case 0x20 ... 0x7e: case 0xa0 ... 0xff: if (el->len < (int)sizeof(el->buf)-1) { el->buf[el->len++] = ev->i1; redraw(el); return; } break; } xio_bell(el->xw); return; case EV_SELECTION: { u8 *p = ev->p1; int n = ev->i1; while (n-- && el->len < (int)sizeof(el->buf)-1) { if (*p >= 0x20 && *p <= 0x7e || *p >= 0xa0 && *p <= 0xff) el->buf[el->len++] = *p; p++; } redraw(el); return; } case EV_MOUSE: if (ev->i4 == 24) { if (ev->i1 == 2) xio_query_selection(el->xw); else xio_bell(el->xw); return; } break; } el->old_handler(el->old_data, ev); } struct edline * edline_new(struct xio_win *xw, u8 *prompt, u8 *str, void *exit_func, void *data) { struct edline *el; int plen, slen; if ((plen = strlen(prompt)) > 20) goto fail1; if ((slen = strlen(str)) > (int)sizeof(el->buf) - 1) goto fail1; if (not(el = malloc(sizeof(*el)))) goto fail1; el->xw = xw; el->prompt = prompt; el->exit_func = exit_func; el->exit_data = data; el->old_handler = xw->handler; //TODO: func to retrieve curr handler el->old_data = xw->data; xio_set_handler(el->xw, ev_handler, el); el->plen = plen; el->len = slen; strcpy(el->buf, str); redraw(el); return el; fail2: free(el); fail1: return 0; } void edline_abort(struct edline *el) { do_exit(el, 0); } alevt-v1.8.0/edline.h000066400000000000000000000010171345074102600144330ustar00rootroot00000000000000#ifndef EDLINE_H #define EDLINE_H #include "misc.h" #include "xio.h" #define EDLEN 128 struct edline { struct xio_win *xw; u8 *prompt; void (*exit_func)(); void *exit_data; void (*old_handler)(); void *old_data; u8 buf[EDLEN]; int plen; // prompt len int len; // current len (excl prompt) int offs; // current scroll offset }; struct edline *edline_new(struct xio_win *xw, u8 *prompt, u8 *preset, void *exit_func, void *data); void edline_abort(struct edline *el); #endif alevt-v1.8.0/exp-gfx.c000066400000000000000000000142561345074102600145550ustar00rootroot00000000000000/* Copyright 1999 by Paul Ortyl */ #include #include #include #include "lang.h" #include "export.h" #include "font.h" #define WW (W*CW) /* pixel width of window */ #define WH (H*CH) /* pixel hegiht of window */ /////////////////////////////////////////////////////// // COMMON ROUTINES FOR PPM AND PNG static inline void draw_char(unsigned char * colour_matrix, int fg, int bg, int c, int dbl, int _x, int _y, int sep) { int x,y; unsigned char* src= (latin1==LATIN1 ? font1_bits : font2_bits); int dest_x=_x*CW; int dest_y=_y*CH; for(y=0;y<(CH<>dbl))*CW*32+ c%32*CW +x; bit=(*(src+bitnr/8))&(1<>dbl))*CW*32+ 0xa0%32*CW +x; maskbit=(*(src+maskbitnr/8))&(1<dbl & (1<<(y-1))) { if (pg->data[y-1][x].attr & EA_HDOUBLE) draw_char(colour_matrix, pg->data[y][x].fg, pg->data[y][x].bg, pg->data[y][x].ch, (0), x, y, ((pg->data[y][x].attr & EA_SEPARATED) ? 1 : 0) ); } else { draw_char(colour_matrix, pg->data[y][x].fg, pg->data[y][x].bg, pg->data[y][x].ch, ((pg->data[y][x].attr & EA_DOUBLE) ? 1 : 0), x, y, ((pg->data[y][x].attr & EA_SEPARATED) ? 1 : 0) ); } } } return; } /////////////////////////////////////////////////////// // STUFF FOR PPM OUTPUT static int ppm_output(struct export *e, char *name, struct fmt_page *pg); struct export_module export_ppm = // exported module definition { "ppm", // id "ppm", // extension 0, // options 0, // size 0, // open 0, // close 0, // option ppm_output // output }; static int ppm_output(struct export *e, char *name, struct fmt_page *pg) { FILE *fp; long n; static u8 rgb1[][3]={{0,0,0}, {1,0,0}, {0,1,0}, {1,1,0}, {0,0,1}, {1,0,1}, {0,1,1}, {1,1,1}}; unsigned char *colour_matrix; if (!(colour_matrix=malloc(WH*WW))) { export_error("cannot allocate memory"); return 0; } prepare_colour_matrix(/*e,*/ pg, (unsigned char *)colour_matrix); if (not(fp = fopen(name, "w"))) { free(colour_matrix); export_error("cannot create file"); return -1; } fprintf(fp,"P6 %d %d 1\n", WW, WH); for(n=0;n static int png_open(struct export *e); static int png_option(struct export *e, int opt, char *arg); static int png_output(struct export *e, char *name, struct fmt_page *pg); static char *png_opts[] = // module options { "compression=<0-9>", // set compression level 0 }; struct png_data // private data in struct export { int compression; }; struct export_module export_png = // exported module definition { "png", // id "png", // extension png_opts, // options sizeof(struct png_data), // size png_open, // open 0, // close png_option, // option png_output // output }; #define D ((struct png_data *)e->data) static int png_open(struct export *e) { //e->reveal=1; // the default should be the same in all formats D->compression = -1; return 0; } static int png_option(struct export *e, int opt, char *arg) { switch (opt) { case 1: // compression= if (*arg >= '0' && *arg <= '9') D->compression = *arg - '0'; break; } return 0; } static int png_output(struct export *e, char *name, struct fmt_page *pg) { FILE *fp; int x; png_structp png_ptr; png_infop info_ptr; png_byte *row_pointers[WH]; static u8 rgb8[][3]={{ 0, 0, 0}, {255, 0, 0}, { 0,255, 0}, {255,255, 0}, { 0, 0,255}, {255, 0,255}, { 0,255,255}, {255,255,255}}; unsigned char *colour_matrix; if (!(colour_matrix=malloc(WH*WW))) { export_error("cannot allocate memory"); return -1; } prepare_colour_matrix(/*e,*/ pg, (unsigned char *)colour_matrix); if (not(fp = fopen(name, "w"))) { free(colour_matrix); export_error("cannot create file"); return -1; } png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (!png_ptr) { free(colour_matrix); fclose(fp); export_error("libpng init error"); return -1; } info_ptr = png_create_info_struct(png_ptr); if (!info_ptr) { png_destroy_write_struct(&png_ptr, (png_infopp)NULL); free(colour_matrix); fclose(fp); export_error("libpng init error"); return -1; } png_init_io(png_ptr, fp); if (D->compression != -1) png_set_compression_level(png_ptr, D->compression); png_set_compression_mem_level(png_ptr, 9); png_set_compression_window_bits(png_ptr, 15); png_set_IHDR(png_ptr, info_ptr, WW, WH, 8, PNG_COLOR_TYPE_PALETTE , PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); png_set_PLTE(png_ptr, info_ptr,(png_color*) rgb8 , 8); png_write_info(png_ptr, info_ptr); for(x=0; x */ #include #include #include "lang.h" #include "export.h" static int html_open(struct export *e); static int html_option(struct export *e, int opt, char *arg); static int html_output(struct export *e, char *name, struct fmt_page *pg); static char *html_opts[] = // module options { "gfx-chr=", // substitute for gfx-symbols "bare", // no headers 0 }; struct html_data // private data in struct export { u8 gfx_chr; u8 bare; }; struct export_module export_html = // exported module definition { "html", // id "html", // extension html_opts, // options sizeof(struct html_data), // size html_open, // open 0, // close html_option, // option html_output // output }; #define D ((struct html_data *)e->data) static int html_open(struct export *e) { D->gfx_chr = '#'; D->bare = 0; //e->reveal=1; // the default should be the same for all formats. return 0; } static int html_option(struct export *e, int opt, char *arg) { switch (opt) { case 1: // gfx-chr= D->gfx_chr = *arg ?: ' '; break; case 2: // bare (no headers) D->bare=1; break; } return 0; } /////////////////////////////////////////////////////// #define HTML_BLACK "#000000" #define HTML_RED "#FF0000" #define HTML_GREEN "#00FF00" #define HTML_YELLOW "#FFFF00" #define HTML_BLUE "#0000FF" #define HTML_MAGENTA "#FF00FF" #define HTML_CYAN "#00FFFF" #define HTML_WHITE "#FFFFFF" #undef UNREADABLE_HTML //no '\n' #define STRIPPED_HTML //only necessary fields in header static int html_output(struct export *e, char *name, struct fmt_page *pg) { const char* html_colours[]={ HTML_BLACK, HTML_RED, HTML_GREEN, HTML_YELLOW, HTML_BLUE, HTML_MAGENTA, HTML_CYAN, HTML_WHITE}; FILE *fp; int x, y; #ifdef UNREADABLE_HTML #define HTML_NL #else #define HTML_NL fputc('\n',fp); #endif if (not(fp = fopen(name, "w"))) { export_error("cannot create file"); return -1; } if (!D->bare) { #ifndef STRIPPED_HTML fputs("",fp); HTML_NL #endif fputs("",fp); HTML_NL #ifndef STRIPPED_HTML fputs(""); break; case LATIN2: fprintf(fp,"charset=iso-8859-2\">"); break; case KOI8: fprintf(fp,"charset=koi8-r\">"); break; case GREEK: fprintf(fp,"charset=iso-8859-7\">"); break; } HTML_NL fputs("",fp); HTML_NL #else switch(latin1) { case LATIN1: fprintf(fp,""); break; case LATIN2: fprintf(fp,""); break; case KOI8: fprintf(fp,""); break; case GREEK: fprintf(fp,""); break; } HTML_NL #endif fputs("",fp); fputs("",fp); HTML_NL } //bare fputs("",fp); HTML_NL // write tables in form of HTML format for (y = 0; y < 25; ++y) { int last_nonblank=0; int first_unprinted=0; int last_space=1; // previous char was   // is used for deciding to put semicolon or not int nbsp=0; // for output filled with ' ' up to 40 chars // set last_nonblank=39 for (x = 0 ; x < 40; ++x) { if (pg->data[y][x].attr & EA_GRAPHIC) {pg->data[y][x].ch= D->gfx_chr;} if (pg->data[y][x].ch!=' ') { last_nonblank=x; // <----- } } for (x = 0 ; x <= last_nonblank ; ++x) { if (pg->data[y][x].ch==' ') { // if single space between blinking/colour words // then make the space blinking/colour too if ((x)&&(x<39)) { if ((pg->data[y][x-1].ch!=' ') &&(pg->data[y][x+1].ch!=' ') &&(pg->data[y][x-1].attr & EA_BLINK) &&(pg->data[y][x+1].attr & EA_BLINK)) {pg->data[y][x].attr |= EA_BLINK;} else {pg->data[y][x].attr &= ~EA_BLINK;} if ((pg->data[y][x-1].ch!=' ') &&(pg->data[y][x+1].ch!=' ') &&(pg->data[y][x-1].fg==pg->data[y][x+1].fg)) {pg->data[y][x].fg=pg->data[y][x-1].fg;} else pg->data[y][x].fg=7; } else { pg->data[y][x].attr &= ~EA_BLINK; pg->data[y][x].fg=7; } } else { // if foreground is black set the foreground to previous // background colour to let it be visible if (!pg->data[y][x].fg) {pg->data[y][x].fg=pg->data[y][x].bg;} } //check if attributes changed, //if yes then print chars and update first_unprinted //if not then go to next char if (x) { if ((( (pg->data[y][x].attr & EA_BLINK) == (pg->data[y][x-1].attr & EA_BLINK) ) && ( pg->data[y][x].fg == pg->data[y][x-1].fg )) &&(x!=last_nonblank)) { continue; } } else continue; { int z=first_unprinted; // last_space=0; for(;(pg->data[y][z].ch==' ') && (zdata[y][first_unprinted].attr & EA_BLINK) { fprintf(fp,""); nbsp=0; } if (pg->data[y][first_unprinted].fg!=7) { fprintf(fp,"", html_colours[pg->data[y][first_unprinted].fg]); nbsp=0; } for(;(zdata[y][z].ch==' ') { for(;(pg->data[y][z].ch==' ') && (z put semicolon!!! if (nbsp) fputc(';',fp); fputc(pg->data[y][z].ch,fp); last_space=0; nbsp=0; } } if (pg->data[y][first_unprinted].fg!=7) { fprintf(fp,""); } if (pg->data[y][first_unprinted].attr & EA_BLINK) fprintf(fp,""); first_unprinted=z; } } fputs("
",fp); HTML_NL } fputs("
",fp); if (!D->bare) fputs("",fp); fclose(fp); return 0; } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// alevt-v1.8.0/exp-txt.c000066400000000000000000000122441345074102600146030ustar00rootroot00000000000000#include #include #include #include "os.h" #include "export.h" static int txt_open(struct export *e); static int txt_option(struct export *e, int opt, char *arg); static int txt_output(struct export *e, char *name, struct fmt_page *pg); static char *txt_opts[] = // module options { "color", // generate ansi color codes (and attributes) "gfx-chr=", // substitute for gfx-symbols "fg=<0-7|none>", // assume term has as foreground color "bg=<0-7|none>", // assume term has as background color "lines=<1-25>", // output 24 or 25 lines 0 }; struct txt_data // private data in struct export { u8 color; u8 gfx_chr; u8 def_fg; u8 def_bg; int endline; struct fmt_char curr[1]; FILE *fp; }; struct export_module export_txt = // exported module definition { "ascii", // id "txt", // extension txt_opts, // options sizeof(struct txt_data), // data size txt_open, // open 0, // close txt_option, // option txt_output, // output }; struct export_module export_ansi = // exported module definition { "ansi", // id "txt", // extension txt_opts, // options sizeof(struct txt_data), // data size txt_open, // open 0, // close txt_option, // option txt_output, // output }; /////////////////////////////////////////////////////// #define D ((struct txt_data *)e->data) char * my_stpcpy(char *dst, const char *src) /* glibc bastards :-( */ { while (*dst = *src++) dst++; return dst; } static int txt_open(struct export *e) { D->gfx_chr = '#'; D->def_fg = -1; D->def_bg = -1; D->endline = H; if (e->mod == &export_ansi) D->color = 1; return 0; } static int txt_option(struct export *e, int opt, char *arg) { switch (opt) { case 1: // color D->color = 1; break; case 2: // gfx-chr= D->gfx_chr = *arg ?: ' '; break; case 3: // fg= D->def_fg = *arg - '0'; break; case 4: // bg= D->def_bg = *arg - '0'; break; case 5: // lines= D->endline = atoi(arg); if (D->endline < 1 || D->endline > H) { export_error("lines: invalid number"); return 1; } } return 0; } static void put_attr(struct export *e, struct fmt_char *new) { char buf[512]; char *p = buf; int fg, bg, attr; int reset = 0; if (D->color) { fg = D->curr->fg ^ new->fg; bg = D->curr->bg ^ new->bg; attr = (D->curr->attr ^ new->attr) & (EA_BLINK | EA_DOUBLE); if (fg | bg | attr) { if (~new->attr & attr) // reset some attributes -> reset all. reset = 1; if (fg && new->fg == D->def_fg) // switch to def fg -> reset all reset = 1; if (bg && new->bg == D->def_bg) // switch to def bg -> reset all reset = 1; p = my_stpcpy(buf, "\e["); if (reset) { p = my_stpcpy(p, ";"); // "0;" but 0 isn't neccesary attr = -1; // set all attributes fg = new->fg ^ D->def_fg; // set fg if != default fg bg = new->bg ^ D->def_bg; // set bg if != default bg } if (attr & new->attr & EA_BLINK) p = my_stpcpy(p, "5;"); // blink if (attr & new->attr & EA_DOUBLE) p = my_stpcpy(p, "1;"); // bold if (fg) p += sprintf(p, "%d;", new->fg + 30); // fg-color if (bg) p += sprintf(p, "%d;", new->bg + 40); // bg-color p[-1] = 'm'; // replace last ; *D->curr = *new; } } *p++ = new->ch; *p = 0; fputs(buf, D->fp); } static int txt_output(struct export *e, char *name, struct fmt_page *pg) { struct fmt_char def_c[1]; struct fmt_char l[W+2]; #define L (l+1) int x, y; D->fp = fopen(name, "w"); if (not D->fp) { export_error("cannot create file"); return -1; } /* initialize default colors. these have to be restored at EOL. */ def_c->ch = '\n'; def_c->fg = D->def_fg; def_c->bg = D->def_bg; def_c->attr = E_DEF_ATTR; *D->curr = *def_c; L[-1] = L[W] = *def_c; for (y = 0; y < D->endline; y++) if (~pg->hid & (1 << y)) // not hidden { // character conversion for (x = 0; x < W; ++x) { struct fmt_char c = pg->data[y][x]; switch (c.ch) { case 0x00: case 0xa0: c.ch = ' '; break; /* case 0x9f: c.ch = ' '; c.bg = c.fg; break; case 0x15: case 0x8a: c.ch = '|'; break; case 0x03: case 0x0c: case 0x90: c.ch = '-'; break; case 0x04: case 0x08: */ case 0x7f: c.ch = '*'; break; case BAD_CHAR: c.ch = '?'; break; default: if (c.attr & EA_GRAPHIC) c.ch = D->gfx_chr; //c.bg = c.fg, c.ch = ' '; break; } L[x] = c; } if (D->color) { // optimize color and attribute changes // delay fg and attr changes as far as possible for (x = 0; x < W; ++x) if (L[x].ch == ' ') { L[x].fg = L[x-1].fg; l[x].attr = L[x-1].attr; } // move fg and attr changes to prev bg change point for (x = W-1; x >= 0; x--) if (L[x].ch == ' ' && L[x].bg == L[x+1].bg) { L[x].fg = L[x+1].fg; L[x].attr = L[x+1].attr; } } // now emit the whole line (incl EOL) for (x = 0; x < W+1; ++x) put_attr(e, L + x); } fclose(D->fp); return 0; } alevt-v1.8.0/export.c000066400000000000000000000154151345074102600145160ustar00rootroot00000000000000#include #include #include #include #include "vt.h" #include "misc.h" #include "export.h" extern struct export_module export_txt; extern struct export_module export_ansi; extern struct export_module export_html; extern struct export_module export_png; extern struct export_module export_ppm; struct export_module *modules[] = { &export_txt, &export_ansi, &export_html, &export_ppm, #ifdef WITH_PNG &export_png, #endif 0 }; static char *glbl_opts[] = { "reveal", // show hidden text "hide", // don't show hidden text (default) 0 }; static char errbuf[64]; void export_error(char *str, ...) { va_list args; va_start(args, str); vsnprintf(errbuf, sizeof(errbuf)-1, str, args); } char * export_errstr(void) { return errbuf; } static int find_opt(char **opts, char *opt, char *arg) { int err = 0; char buf[256]; char **oo, *o, *a; if (oo = opts) while (o = *oo++) { if (a = strchr(o, '=')) { a = buf + (a - o); o = strcpy(buf, o); *a++ = 0; } if (strcasecmp(o, opt) == 0) { if ((a != 0) == (arg != 0)) return oo - opts; err = -1; } } return err; } struct export * export_open(char *fmt) { struct export_module **eem, *em; struct export *e; char *opt, *optend, *optarg; int opti; if (fmt = strdup(fmt)) { if (opt = strchr(fmt, ',')) *opt++ = 0; for (eem = modules; em = *eem; eem++) if (strcasecmp(em->fmt_name, fmt) == 0) break; if (em) { if (e = malloc(sizeof(*e) + em->local_size)) { e->mod = em; e->fmt_str = fmt; e->reveal = 0; memset(e + 1, 0, em->local_size); if (not em->open || em->open(e) == 0) { for (; opt; opt = optend) { if (optend = strchr(opt, ',')) *optend++ = 0; if (not *opt) continue; if (optarg = strchr(opt, '=')) *optarg++ = 0; if ((opti = find_opt(glbl_opts, opt, optarg)) > 0) { if (opti == 1) // reveal e->reveal = 1; else if (opti == 2) // hide e->reveal = 0; } else if (opti == 0 && (opti = find_opt(em->options, opt, optarg)) > 0) { if (em->option(e, opti, optarg)) break; } else { if (opti == 0) export_error("%s: unknown option", opt); else if (optarg) export_error("%s: takes no arg", opt); else export_error("%s: missing arg", opt); break; } } if (opt == 0) return e; if (em->close) em->close(e); } free(e); } else export_error("out of memory"); } else export_error("unknown format: %s", fmt); free(fmt); } else export_error("out of memory"); return 0; } void export_close(struct export *e) { if (e->mod->close) e->mod->close(e); free(e->fmt_str); free(e); } static char * hexnum(char *buf, unsigned int num) { char *p = buf + 5; num &= 0xffff; *--p = 0; do { *--p = "0123456789abcdef"[num % 16]; num /= 16; } while (num); return p; } static char * adjust(char *p, char *str, char fill, int width) { int l = width - strlen(str); while (l-- > 0) *p++ = fill; while (*p = *str++) p++; return p; } char * export_mkname(struct export *e, char *fmt, struct vt_page *vtp, char *usr) { char bbuf[1024]; char *p = bbuf; while (*p = *fmt++) if (*p++ == '%') { char buf[32], buf2[32]; int width = 0; p--; while (*fmt >= '0' && *fmt <= '9') width = width*10 + *fmt++ - '0'; switch (*fmt++) { case '%': p = adjust(p, "%", '%', width); break; case 'e': // extension p = adjust(p, e->mod->extension, '.', width); break; case 'p': // pageno[.subno] if (vtp->subno) p = adjust(p,strcat(strcat(hexnum(buf, vtp->pgno), "."), hexnum(buf2, vtp->subno)), ' ', width); else p = adjust(p, hexnum(buf, vtp->pgno), ' ', width); break; case 'S': // subno p = adjust(p, hexnum(buf, vtp->subno), '0', width); break; case 'P': // pgno p = adjust(p, hexnum(buf, vtp->pgno), '0', width); break; case 's': // user strin p = adjust(p, usr, ' ', width); break; //TODO: add date, channel name, ... } } p = strdup(bbuf); if (not p) export_error("out of memory"); return p; } static void fmt_page(struct export *e, struct fmt_page *pg, struct vt_page *vtp) { char buf[16]; int x, y; u8 *p = vtp->data[0]; pg->dbl = 0; sprintf(buf, "\2%x.%02x\7", vtp->pgno, vtp->subno & 0xff); for (y = 0; y < H; y++) { struct fmt_char c; int last_ch = ' '; int dbl = 0, hold = 0; c.fg = 7; c.bg = 0; c.attr = 0; for (x = 0; x < W; ++x) { c.ch = *p++; if (y == 0 && x < 8) c.ch = buf[x]; switch (c.ch) { case 0x00 ... 0x07: /* alpha + fg color */ c.fg = c.ch & 7; c.attr &= ~(EA_GRAPHIC | EA_CONCEALED); goto ctrl; case 0x08: /* flash */ c.attr |= EA_BLINK; goto ctrl; case 0x09: /* steady */ c.attr &= ~EA_BLINK; goto ctrl; case 0x0a: /* end box */ case 0x0b: /* start box */ goto ctrl; case 0x0c: /* normal height */ c.attr &= EA_DOUBLE; goto ctrl; case 0x0d: /* double height */ if (y < H-2) /* ignored on last 2 lines */ { c.attr |= EA_DOUBLE; dbl = 1; } goto ctrl; case 0x10 ... 0x17: /* gfx + fg color */ c.fg = c.ch & 7; c.attr |= EA_GRAPHIC; c.attr &= ~EA_CONCEALED; goto ctrl; case 0x18: /* conceal */ c.attr |= EA_CONCEALED; goto ctrl; case 0x19: /* contiguous gfx */ c.attr &= ~EA_SEPARATED; goto ctrl; case 0x1a: /* separate gfx */ c.attr |= EA_SEPARATED; goto ctrl; case 0x1c: /* black bg */ c.bg = 0; goto ctrl; case 0x1d: /* new bg */ c.bg = c.fg; goto ctrl; case 0x1e: /* hold gfx */ hold = 1; goto ctrl; case 0x1f: /* release gfx */ hold = 0; goto ctrl; case 0x0e: /* SO */ case 0x0f: /* SI */ case 0x1b: /* ESC */ c.ch = ' '; break; ctrl: c.ch = ' '; if (hold && (c.attr & EA_GRAPHIC)) c.ch = last_ch; break; } if (c.attr & EA_GRAPHIC) if ((c.ch & 0xa0) == 0x20) { last_ch = c.ch; c.ch += (c.ch & 0x40) ? 32 : -32; } if (c.attr & EA_CONCEALED) if (not e->reveal) c.ch = ' '; pg->data[y][x] = c; } if (dbl) { pg->dbl |= 1 << y; for (x = 0; x < W; ++x) { if (~pg->data[y][x].attr & EA_DOUBLE) pg->data[y][x].attr |= EA_HDOUBLE; pg->data[y+1][x] = pg->data[y][x]; pg->data[y+1][x].ch = ' '; } y++; p += W; } } pg->hid = pg->dbl << 1; } int export(struct export *e, struct vt_page *vtp, char *name) { struct fmt_page pg[1]; fmt_page(e, pg, vtp); return e->mod->output(e, name, pg); } alevt-v1.8.0/export.h000066400000000000000000000031461345074102600145210ustar00rootroot00000000000000#ifndef EXPORT_H #define EXPORT_H #include "vt.h" #include "misc.h" struct fmt_char { u8 ch, fg, bg, attr; }; #define EA_DOUBLE 1 // double height char #define EA_HDOUBLE 2 // single height char in double height line #define EA_BLINK 4 // blink #define EA_CONCEALED 8 // concealed #define EA_GRAPHIC 16 // graphic symbol #define EA_SEPARATED 32 // use separated graphic symbol #define E_DEF_FG 7 #define E_DEF_BG 0 #define E_DEF_ATTR 0 struct fmt_page { struct vt_page *vtp; u32 dbl, hid; struct fmt_char data[H][W]; }; struct export { struct export_module *mod; // module type char *fmt_str; // saved option string (splitted) // global options int reveal; // reveal hidden chars // local data for module's use. initialized to 0. struct { int dummy; } data[0]; }; struct export_module { char *fmt_name; // the format type name (ASCII/HTML/PNG/...) char *extension; // the default file name extension char **options; // module options int local_size; int (*open)(struct export *fmt); void (*close)(struct export *fmt); int (*option)(struct export *fmt, int opt, char *arg); int (*output)(struct export *fmt, char *name, struct fmt_page *pg); }; extern struct export_module *modules[]; // list of modules (for help msgs) void export_error(char *str, ...); // set error char *export_errstr(void); // return last error char *export_mkname(struct export *e, char *fmt, struct vt_page *vtp, char *usr); struct export *export_open(char *fmt); void export_close(struct export *e); int export(struct export *e, struct vt_page *vtp, char *user_str); #endif alevt-v1.8.0/fdset.c000066400000000000000000000035461345074102600143040ustar00rootroot00000000000000#include #include #include #include "dllist.h" #include "misc.h" #include "fdset.h" struct fdset fds[1]; /* global fd list */ int fdset_init(struct fdset *fds) { dl_init(fds->list); fds->del_count = 0; return 0; } int fdset_add_fd(struct fdset *fds, int fd, void *handler, void *data) { struct fdset_node *fn; if (fd < 0) return -1; if (handler == 0) return -1; for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next) if (fn->fd == fd) return -1; if (not(fn = malloc(sizeof(*fn)))) return -1; fn->fd = fd; fn->handler = handler; fn->data = data; dl_insert_last(fds->list, fn->node); return 0; } int fdset_del_fd(struct fdset *fds, int fd) { struct fdset_node *fn; for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next) if (fn->fd == fd) { dl_remove(fn->node); free(fn); fds->del_count++; return 0; } return -1; } int fdset_select(struct fdset *fds, int timeout) { struct fdset_node *fn; fd_set rfds[1]; struct timeval tv[1], *tvp = 0; int max_fd, x, del_count; FD_ZERO(rfds); max_fd = 0; for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next) { FD_SET(fn->fd, rfds); if (fn->fd >= max_fd) max_fd = fn->fd + 1; } if (timeout >= 0) { tv->tv_sec = timeout/1000; tv->tv_usec = timeout%1000*1000; tvp = tv; } x = select(max_fd, rfds, 0, 0, tvp); if (x <= 0) return x; /* A little bit complicated. A called handler may modify the fdset... */ restart: del_count = fds->del_count; for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next) if (FD_ISSET(fn->fd, rfds)) { FD_CLR(fn->fd, rfds); fn->handler(fn->data, fn->fd); if (fds->del_count != del_count) goto restart; } return 1; } alevt-v1.8.0/fdset.h000066400000000000000000000010221345074102600142740ustar00rootroot00000000000000#ifndef FDSET_H #define FDSET_H #include "dllist.h" struct fdset { struct dl_head list[1]; int del_count; }; struct fdset_node /*internal*/ { struct dl_node node[1]; int fd; void (*handler)(void *data, int fd); void *data; }; extern struct fdset fds[1]; /* global fd list */ int fdset_init(struct fdset *fds); int fdset_add_fd(struct fdset *fds, int fd, void *handler, void *data); int fdset_del_fd(struct fdset *fds, int fd); int fdset_select(struct fdset *fds, int timeout /*millisec*/); #endif alevt-v1.8.0/font.c000066400000000000000000000001751345074102600141400ustar00rootroot00000000000000#define static /* I want them global */ #include "font1.xbm" #include "font2.xbm" #include "font3.xbm" #include "font4.xbm" alevt-v1.8.0/font.h000066400000000000000000000010321345074102600141360ustar00rootroot00000000000000#ifndef FONT_H #define FONT_H #include "fontsize.h" /* the #defines from font?.xbm */ #if font1_width != font2_width || font1_height != font2_height #error different font sizes. #endif extern unsigned char font1_bits[]; extern unsigned char font2_bits[]; extern unsigned char font3_bits[]; extern unsigned char font4_bits[]; #define font_width font1_width #define font_height font1_height #define CW (font_width/32) /* pixel width of a character */ #define CH (font_height/8) /* pixel height of a character */ #endif alevt-v1.8.0/hamm.c000066400000000000000000000241261345074102600141160ustar00rootroot00000000000000#include "vt.h" #include "hamm.h" // table to decode hamm8/4 encoded bytes. // the low 4 bits are the (corrected) data bits // bit 8 is set if there was a single bit error // bit 12 is set if there was an uncorrectable error // the idea: you may add up to 15 words and get the // number of single bit errors in b8-b11 and the number // of double errors in b12-b15 static unsigned short hammtab[256] = { 0x0101, 0x100f, 0x0001, 0x0101, 0x100f, 0x0100, 0x0101, 0x100f, 0x100f, 0x0102, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107, 0x100f, 0x0100, 0x0101, 0x100f, 0x0100, 0x0000, 0x100f, 0x0100, 0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x0103, 0x100f, 0x100f, 0x010c, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107, 0x0106, 0x100f, 0x100f, 0x0107, 0x100f, 0x0107, 0x0107, 0x0007, 0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x010d, 0x100f, 0x0006, 0x0106, 0x0106, 0x100f, 0x0106, 0x100f, 0x100f, 0x0107, 0x100f, 0x0102, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109, 0x0102, 0x0002, 0x100f, 0x0102, 0x100f, 0x0102, 0x0103, 0x100f, 0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x0103, 0x100f, 0x100f, 0x0102, 0x0103, 0x100f, 0x0103, 0x100f, 0x0003, 0x0103, 0x0104, 0x100f, 0x100f, 0x0105, 0x0004, 0x0104, 0x0104, 0x100f, 0x100f, 0x0102, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107, 0x100f, 0x0105, 0x0105, 0x0005, 0x0104, 0x100f, 0x100f, 0x0105, 0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x0103, 0x100f, 0x100f, 0x010c, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109, 0x010a, 0x100f, 0x100f, 0x010b, 0x000a, 0x010a, 0x010a, 0x100f, 0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x010d, 0x100f, 0x100f, 0x010b, 0x010b, 0x000b, 0x010a, 0x100f, 0x100f, 0x010b, 0x010c, 0x000c, 0x100f, 0x010c, 0x100f, 0x010c, 0x010d, 0x100f, 0x100f, 0x010c, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107, 0x100f, 0x010c, 0x010d, 0x100f, 0x010d, 0x100f, 0x000d, 0x010d, 0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x010d, 0x100f, 0x0108, 0x100f, 0x100f, 0x0109, 0x100f, 0x0109, 0x0109, 0x0009, 0x100f, 0x0102, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109, 0x0008, 0x0108, 0x0108, 0x100f, 0x0108, 0x100f, 0x100f, 0x0109, 0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x0103, 0x100f, 0x100f, 0x010c, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109, 0x010f, 0x100f, 0x000f, 0x010f, 0x100f, 0x010e, 0x010f, 0x100f, 0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x010d, 0x100f, 0x100f, 0x010e, 0x010f, 0x100f, 0x010e, 0x000e, 0x100f, 0x010e, }; #if 0 // this information is contained in hamm24par bit 5 // simple parity table (sum of 1 bits modulo 2) static char odd_parity[256] = { 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0 }; #endif // this table generates the parity checks for hamm24/18 decoding. // bit 0 is for test A, 1 for B, ... // thanks to R. Gancarz for this fine table *g* static char hamm24par[3][256] = { { // parities of first byte 0, 33, 34, 3, 35, 2, 1, 32, 36, 5, 6, 39, 7, 38, 37, 4, 37, 4, 7, 38, 6, 39, 36, 5, 1, 32, 35, 2, 34, 3, 0, 33, 38, 7, 4, 37, 5, 36, 39, 6, 2, 35, 32, 1, 33, 0, 3, 34, 3, 34, 33, 0, 32, 1, 2, 35, 39, 6, 5, 36, 4, 37, 38, 7, 39, 6, 5, 36, 4, 37, 38, 7, 3, 34, 33, 0, 32, 1, 2, 35, 2, 35, 32, 1, 33, 0, 3, 34, 38, 7, 4, 37, 5, 36, 39, 6, 1, 32, 35, 2, 34, 3, 0, 33, 37, 4, 7, 38, 6, 39, 36, 5, 36, 5, 6, 39, 7, 38, 37, 4, 0, 33, 34, 3, 35, 2, 1, 32, 40, 9, 10, 43, 11, 42, 41, 8, 12, 45, 46, 15, 47, 14, 13, 44, 13, 44, 47, 14, 46, 15, 12, 45, 41, 8, 11, 42, 10, 43, 40, 9, 14, 47, 44, 13, 45, 12, 15, 46, 42, 11, 8, 41, 9, 40, 43, 10, 43, 10, 9, 40, 8, 41, 42, 11, 15, 46, 45, 12, 44, 13, 14, 47, 15, 46, 45, 12, 44, 13, 14, 47, 43, 10, 9, 40, 8, 41, 42, 11, 42, 11, 8, 41, 9, 40, 43, 10, 14, 47, 44, 13, 45, 12, 15, 46, 41, 8, 11, 42, 10, 43, 40, 9, 13, 44, 47, 14, 46, 15, 12, 45, 12, 45, 46, 15, 47, 14, 13, 44, 40, 9, 10, 43, 11, 42, 41, 8 }, { // parities of second byte 0, 41, 42, 3, 43, 2, 1, 40, 44, 5, 6, 47, 7, 46, 45, 4, 45, 4, 7, 46, 6, 47, 44, 5, 1, 40, 43, 2, 42, 3, 0, 41, 46, 7, 4, 45, 5, 44, 47, 6, 2, 43, 40, 1, 41, 0, 3, 42, 3, 42, 41, 0, 40, 1, 2, 43, 47, 6, 5, 44, 4, 45, 46, 7, 47, 6, 5, 44, 4, 45, 46, 7, 3, 42, 41, 0, 40, 1, 2, 43, 2, 43, 40, 1, 41, 0, 3, 42, 46, 7, 4, 45, 5, 44, 47, 6, 1, 40, 43, 2, 42, 3, 0, 41, 45, 4, 7, 46, 6, 47, 44, 5, 44, 5, 6, 47, 7, 46, 45, 4, 0, 41, 42, 3, 43, 2, 1, 40, 48, 25, 26, 51, 27, 50, 49, 24, 28, 53, 54, 31, 55, 30, 29, 52, 29, 52, 55, 30, 54, 31, 28, 53, 49, 24, 27, 50, 26, 51, 48, 25, 30, 55, 52, 29, 53, 28, 31, 54, 50, 27, 24, 49, 25, 48, 51, 26, 51, 26, 25, 48, 24, 49, 50, 27, 31, 54, 53, 28, 52, 29, 30, 55, 31, 54, 53, 28, 52, 29, 30, 55, 51, 26, 25, 48, 24, 49, 50, 27, 50, 27, 24, 49, 25, 48, 51, 26, 30, 55, 52, 29, 53, 28, 31, 54, 49, 24, 27, 50, 26, 51, 48, 25, 29, 52, 55, 30, 54, 31, 28, 53, 28, 53, 54, 31, 55, 30, 29, 52, 48, 25, 26, 51, 27, 50, 49, 24 }, { // parities of third byte 63, 14, 13, 60, 12, 61, 62, 15, 11, 58, 57, 8, 56, 9, 10, 59, 10, 59, 56, 9, 57, 8, 11, 58, 62, 15, 12, 61, 13, 60, 63, 14, 9, 56, 59, 10, 58, 11, 8, 57, 61, 12, 15, 62, 14, 63, 60, 13, 60, 13, 14, 63, 15, 62, 61, 12, 8, 57, 58, 11, 59, 10, 9, 56, 8, 57, 58, 11, 59, 10, 9, 56, 60, 13, 14, 63, 15, 62, 61, 12, 61, 12, 15, 62, 14, 63, 60, 13, 9, 56, 59, 10, 58, 11, 8, 57, 62, 15, 12, 61, 13, 60, 63, 14, 10, 59, 56, 9, 57, 8, 11, 58, 11, 58, 57, 8, 56, 9, 10, 59, 63, 14, 13, 60, 12, 61, 62, 15, 31, 46, 45, 28, 44, 29, 30, 47, 43, 26, 25, 40, 24, 41, 42, 27, 42, 27, 24, 41, 25, 40, 43, 26, 30, 47, 44, 29, 45, 28, 31, 46, 41, 24, 27, 42, 26, 43, 40, 25, 29, 44, 47, 30, 46, 31, 28, 45, 28, 45, 46, 31, 47, 30, 29, 44, 40, 25, 26, 43, 27, 42, 41, 24, 40, 25, 26, 43, 27, 42, 41, 24, 28, 45, 46, 31, 47, 30, 29, 44, 29, 44, 47, 30, 46, 31, 28, 45, 41, 24, 27, 42, 26, 43, 40, 25, 30, 47, 44, 29, 45, 28, 31, 46, 42, 27, 24, 41, 25, 40, 43, 26, 43, 26, 25, 40, 24, 41, 42, 27, 31, 46, 45, 28, 44, 29, 30, 47 } }; // table to extract the lower 4 bit from hamm24/18 encoded bytes static char hamm24val[256] = { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15 }; // mapping from parity checks made by table hamm24par to error // results return by hamm24. // (0 = no error, 0x0100 = single bit error, 0x1000 = double error) static short hamm24err[64] = { 0x0000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, }; // mapping from parity checks made by table hamm24par to faulty bit // in the decoded 18 bit word. static int hamm24cor[64] = { 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00001, 0x00000, 0x00002, 0x00004, 0x00008, 0x00000, 0x00010, 0x00020, 0x00040, 0x00080, 0x00100, 0x00200, 0x00400, 0x00000, 0x00800, 0x01000, 0x02000, 0x04000, 0x08000, 0x10000, 0x20000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, }; int hamm8(u8 *p, int *err) { int a = hammtab[p[0]]; *err += a; return a & 15; } int hamm16(u8 *p, int *err) { int a = hammtab[p[0]]; int b = hammtab[p[1]]; *err += a; *err += b; return (a & 15) | (b & 15) * 16; } int hamm24(u8 *p, int *err) { int e = hamm24par[0][p[0]] ^ hamm24par[1][p[1]] ^ hamm24par[2][p[2]]; int x = hamm24val[p[0]] + p[1] % 128 * 16 + p[2] % 128 * 2048; *err += hamm24err[e]; return x ^ hamm24cor[e]; } int chk_parity(u8 *p, int n) { int err; for (err = 0; n--; p++) if (hamm24par[0][*p] & 32) *p &= 0x7f; else *p = BAD_CHAR, err++; return err; } alevt-v1.8.0/hamm.h000066400000000000000000000002331345074102600141140ustar00rootroot00000000000000#ifndef HAMM_H #define HAMM_H int hamm8(u8 *p, int *err); int hamm16(u8 *p, int *err); int hamm24(u8 *p, int *err); int chk_parity(u8 *p, int n); #endif alevt-v1.8.0/help.c000066400000000000000000000037671345074102600141340ustar00rootroot00000000000000#include "vt.h" #include "misc.h" //#define VFILL "" #define VFILL " " #define HELP_HEADER \ "........\6AleVT Online Help System ", \ " \22`p0`0 p `0pppp ", \ "\4\35\22\177 \177j5`p \177 j5 j5 \7 Version \34", \ "\4\35\22\177,\177j5\177.! +t>! j5 \7"VFILL VERSION" \34", \ " \22# #\42!\42# \42 \42! ", #define FLOF_DATA \ 1, { {0x100,ANY_SUB}, {0x200,ANY_SUB}, {0x300,ANY_SUB}, \ {0x400,ANY_SUB}, {0x0ff,ANY_SUB}, {0x100,ANY_SUB} } struct vt_page help_pages[] = { { 0x900, 0, -1, 0, 0, (1<<26)-1, { #include "vt900.out" }, FLOF_DATA }, { 0x901, 4, -1, 0, 0, (1<<26)-1, { #include "vt901-04.out" }, FLOF_DATA }, { 0x901, 3, -1, 0, 0, (1<<26)-1, { #include "vt901-03.out" }, FLOF_DATA }, { 0x901, 2, -1, 0, 0, (1<<26)-1, { #include "vt901-02.out" }, FLOF_DATA }, { 0x901, 1, -1, 0, 0, (1<<26)-1, { #include "vt901-01.out" }, FLOF_DATA }, #if 0 { 0x902, 0, -1, 0, 0, (1<<26)-1, { #include "vt902.out" }, FLOF_DATA }, #endif { 0x903, 0, -1, 0, 0, (1<<26)-1, { #include "vt903.out" }, FLOF_DATA }, { 0x910, 0, -1, 0, 0, (1<<26)-1, { #include "vt910.out" }, FLOF_DATA }, { 0x911, 2, -1, 0, 0, (1<<26)-1, { #include "vt911-02.out" }, FLOF_DATA }, { 0x911, 1, -1, 0, 0, (1<<26)-1, { #include "vt911-01.out" }, FLOF_DATA }, { 0x912, 2, -1, 0, 0, (1<<26)-1, { #include "vt912-02.out" }, FLOF_DATA }, { 0x912, 1, -1, 0, 0, (1<<26)-1, { #include "vt912-01.out" }, FLOF_DATA }, { 0x913, 0, -1, 0, 0, (1<<26)-1, { #include "vt913.out" }, FLOF_DATA }, { 0x914, 2, -1, 0, 0, (1<<26)-1, { #include "vt914-02.out" }, FLOF_DATA }, { 0x914, 1, -1, 0, 0, (1<<26)-1, { #include "vt914-01.out" }, FLOF_DATA }, { 0x915, 0, -1, 0, 0, (1<<26)-1, { #include "vt915.out" }, FLOF_DATA }, { 0x999, 0, -1, 0, 0, (1<<26)-1, { #include "vt999.out" }, FLOF_DATA }, }; const int nr_help_pages = NELEM(help_pages); alevt-v1.8.0/help.h000066400000000000000000000001741345074102600141260ustar00rootroot00000000000000#ifndef HELP_H #define HELP_H #include "vt.h" extern struct vt_page help_pages[]; extern const int nr_help_pages; #endif alevt-v1.8.0/icon-old.xbm000066400000000000000000000020611345074102600152360ustar00rootroot00000000000000#define icon_width 64 #define icon_height 20 static unsigned char icon_bits[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x78, 0xf8, 0xff, 0x87, 0x1f, 0x06, 0x80, 0x07, 0x78, 0xf8, 0xff, 0x87, 0x1f, 0x06, 0x80, 0xe1, 0x61, 0xa8, 0xaa, 0x86, 0x1a, 0x7a, 0xf8, 0x61, 0x61, 0xd8, 0x5f, 0x85, 0x15, 0x56, 0x58, 0xa1, 0x61, 0x68, 0xa0, 0x86, 0x1a, 0x6a, 0xa8, 0x61, 0x61, 0x78, 0x60, 0x85, 0x15, 0x56, 0x58, 0xa1, 0x61, 0x18, 0x86, 0x86, 0x1a, 0x6a, 0xa8, 0x61, 0x61, 0x18, 0x86, 0x85, 0x15, 0x56, 0x58, 0xa1, 0x61, 0x18, 0x86, 0x86, 0x1a, 0x6a, 0xa8, 0xe1, 0x61, 0x18, 0x86, 0x85, 0x1f, 0x56, 0x58, 0x01, 0x60, 0x18, 0xe0, 0x1a, 0x86, 0x6b, 0xa8, 0x01, 0x60, 0x18, 0x60, 0x15, 0x86, 0x55, 0x58, 0xe1, 0x61, 0x18, 0xbe, 0x6a, 0xe0, 0x6a, 0xa8, 0x21, 0x61, 0x18, 0x7e, 0x55, 0x60, 0x55, 0x58, 0xe1, 0x61, 0x78, 0xe0, 0xff, 0xf9, 0x7f, 0xf8, 0xe1, 0x61, 0x78, 0xe0, 0xff, 0xf9, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, }; alevt-v1.8.0/icon.xbm000066400000000000000000000020611345074102600144620ustar00rootroot00000000000000#define icon_width 58 #define icon_height 20 static unsigned char icon_bits[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x0f, 0x30, 0xfe, 0xff, 0xf8, 0x11, 0x00, 0x03, 0x0f, 0x30, 0xfe, 0xff, 0xf8, 0x11, 0x00, 0x03, 0xc5, 0x23, 0xaa, 0xaa, 0xa8, 0xf1, 0xf1, 0x03, 0xc6, 0x22, 0xfe, 0xd5, 0x58, 0xb1, 0xb1, 0x02, 0x45, 0x23, 0x06, 0xaa, 0xa8, 0x51, 0x51, 0x01, 0xc6, 0x22, 0x06, 0xd6, 0x58, 0xb1, 0xb1, 0x02, 0x45, 0x23, 0x62, 0xac, 0xa8, 0x51, 0x51, 0x01, 0xc6, 0x22, 0x62, 0xd4, 0x58, 0xb1, 0xb1, 0x02, 0x45, 0x23, 0x62, 0xac, 0xa8, 0x51, 0x51, 0x01, 0xc6, 0x23, 0x62, 0xd4, 0xf8, 0xb1, 0xb1, 0x02, 0x05, 0x20, 0x02, 0xae, 0x61, 0x58, 0x51, 0x01, 0x06, 0x20, 0x02, 0x56, 0x61, 0xa8, 0xb1, 0x02, 0xc5, 0x23, 0xe2, 0xab, 0x06, 0x56, 0x51, 0x01, 0x46, 0x22, 0xe2, 0x57, 0x05, 0xaa, 0xb1, 0x02, 0xc7, 0x23, 0x06, 0xfe, 0x9f, 0xff, 0xf1, 0x03, 0xc7, 0x23, 0x06, 0xfe, 0x9f, 0xff, 0xf1, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, }; alevt-v1.8.0/lang.c000066400000000000000000000226011345074102600141110ustar00rootroot00000000000000#include #include #include "misc.h" #include "vt.h" #include "lang.h" int latin1 = -1; static u8 lang_char[256]; static u8 lang_chars[1+8+8][16] = { { 0, 0x23,0x24,0x40,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x7b,0x7c,0x7d,0x7e }, // for latin-1 font // English (100%) { 0, '£', '$', '@', '«', '½', '»', '¬', '#', '­', 'Ό', '¦', 'Ύ', 'χ' }, // German (100%) { 0, '#', '$', '§', 'Δ', 'Φ', 'ά', '^', '_', '°', 'δ', 'φ', 'ό', 'ί' }, // Swedish/Finnish/Hungarian (100%) { 0, '#', '¤', 'Ι', 'Δ', 'Φ', 'Ε', 'ά', '_', 'ι', 'δ', 'φ', 'ε', 'ό' }, // Italian (100%) { 0, '£', '$', 'ι', '°', 'η', '»', '¬', '#', 'ω', 'ΰ', 'ς', 'θ', 'μ' }, // French (100%) { 0, 'ι', 'ο', 'ΰ', 'λ', 'κ', 'ω', 'ξ', '#', 'θ', 'β', 'τ', 'ϋ', 'η' }, // Portuguese/Spanish (100%) { 0, 'η', '$', '΅', 'α', 'ι', 'ν', 'σ', 'ϊ', 'Ώ', 'ό', 'ρ', 'θ', 'ΰ' }, // Czech/Slovak (60%) { 0, '#', 'u', 'c', 't', 'z', 'ύ', 'ν', 'r', 'ι', 'α', 'e', 'ϊ', 's' }, // reserved (English mapping) { 0, '£', '$', '@', '«', '½', '»', '¬', '#', '­', 'Ό', '¦', 'Ύ', 'χ' }, // for latin-2 font // Polish (100%) { 0, '#', 'ρ', '±', '―', '¦', '£', 'ζ', 'σ', 'κ', 'Ώ', '¶', '³', 'Ό' }, // German (100%) { 0, '#', '$', '§', 'Δ', 'Φ', 'ά', '^', '_', '°', 'δ', 'φ', 'ό', 'ί' }, // Estonian (100%) { 0, '#', 'υ', '©', 'Δ', 'Φ', '®', 'ά', 'Υ', 'Ή', 'δ', 'φ', 'Ύ', 'ό' }, // Lettish/Lithuanian (90%) { 0, '#', '$', '©', 'λ', 'κ', '®', 'θ', 'ό', 'Ή', '±', 'u', 'Ύ', 'i' }, // French (90%) { 0, 'ι', 'i', 'a', 'λ', 'μ', 'u', 'ξ', '#', 'e', 'β', 'τ', 'u', 'η' }, // Serbian/Croation/Slovenian (100%) { 0, '#', 'Λ', 'Θ', 'Ζ', '®', 'Π', '©', 'λ', 'θ', 'ζ', '®', 'π', 'Ή' }, // Czech/Slovak (100%) { 0, '#', 'ω', 'θ', '»', 'Ύ', 'ύ', 'ν', 'ψ', 'ι', 'α', 'μ', 'ϊ', 'Ή' }, // Rumanian (95%) { 0, '#', 'Ά', 'ή', 'Β', '', 'Γ', 'Ξ', 'i', 'ώ', 'β', 'Ί', 'γ', 'ξ' }, }; /* Yankable latin charset :-) !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ `abcdefghijklmnopqrstuvwxyz{|}~ ΅Ά£¤¥¦§¨©«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏ ΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήί ΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ */ static struct mark { u8 *g0, *latin1, *latin2; } marks[16] = { /* none */ { "#", "¤", "$" }, /* grave - ` */ { " aeiouAEIOU", "`ΰθμςωΐΘΜΩ", "`aeiouAEIOU" }, /* acute - ' */ { " aceilnorsuyzACEILNORSUYZ", "'αcινlnσrsϊύzΑCΙΝLNΣRSΪέZ", "'αζινερσΰ¶ϊύΌΑΖΙΝΕΡΣΐ¦Ϊέ¬" }, /* cirumflex - ^ */ { " aeiouAEIOU", "^βκξτϋΒΚΞΤΫ", "^βeξτuΒEΞΤU" }, /* tilde - ~ */ { " anoANO", "~γρυΓΡΥ", "~anoANO" }, /* ??? - ― */ { "", "", "" }, /* breve - u */ { "aA", "aA", "γΓ" }, /* abovedot - · */ { "zZ", "zZ", "Ώ―" }, /* diaeresis ¨ */ { "aeiouAEIOU", "δλοφόΔΛΟΦά", "δλiφόΔΛIΦά" }, /* ??? - . */ { "", "", "" }, /* ringabove - ° */ { " auAU", "°εuΕU", "°aωAΩ" }, /* cedilla - Έ */ { "cstCST", "ηstΗST", "ηΊώΗή" }, /* ??? - _ */ { " ", "_", "_" }, /* dbl acute - " */ { " ouOU", "\"ouOU", "\"υϋΥΫ" }, /* ogonek - \, */ { "aeAE", "aeAE", "±κ΅Κ" }, /* caron - v */ { "cdelnrstzCDELNRSTZ", "cdelnrstzCDELNRSTZ", "θομµςψΉ»ΎΘΟΜ¥Ψ©«®" }, }; static u8 g2map_latin1[] = /*0123456789abcdef*/ " ΅Ά£$¥#§¤'\"« " "°±²³Χµ¶·χ'\"»Ό½ΎΏ" " `΄^~ ¨.°Έ_\" " "_Ή®© " " ΖΠH ILLΨ ΊήTNn" "Kζdπhiillψ ίώtn\x7f"; static u8 g2map_latin2[] = /*0123456789abcdef*/ " icL$Y#§¤'\"< " "° Χu χ'\"> " " `΄^~ Ά¨.°Έ_½²·" "- RC " " ΠaH iL£O opTNn" "K πdhiil³o ίptn\x7f"; void lang_init(void) { int i; memset(lang_char, 0, sizeof(lang_char)); for (i = 1; i <= 13; i++) lang_char[lang_chars[0][i]] = i; } void conv2latin(u8 *p, int n, int lang) { int c, gfx = 0, lat=0; if ((latin1 == KOI8) && lang==12) { /* russian */ while (n--) { c=*p; if(c==0x1b) lat = !lat; /* ESC switches languages inside page */ if ( is_koi(c)) { if (not gfx || (c & 0xa0) != 0x20) { if(!lat) conv2koi8(p); } } else if ((c & 0xe8) == 0) gfx = c & 0x10; p++; } } else if ((latin1 == GREEK) && lang==15) { /* Hellas */ while (n--) { c=*p; if(c==0x1b) lat = !lat; /* ESC switches languages inside page */ if ( is_greek(c)) { if (not gfx || (c & 0xa0) != 0x20) { if(!lat) conv2greek(p); } } else if ((c & 0xe8) == 0) gfx = c & 0x10; p++; } } else { while (n--) { if (lang_char[c = *p]) { if (not gfx || (c & 0xa0) != 0x20) *p = lang_chars[lang + 1][lang_char[c]]; } else if ((c & 0xe8) == 0) gfx = c & 0x10; p++; } } } /* check for Greek chars - needs locale iso8859-7 set */ int is_greek(int c) { if( isalpha(c | 0x80)) return 1; return 0; } /* check for russian chars - needs locale KOI8-R set */ int is_koi(int c) { if( isalpha(c | 0x80)) return 1; if( c=='&' ) return 1; return 0; } /* teletext to koi8-r conversion */ void conv2koi8(u8 *p) { u8 c; static u8 l2koi[]={ 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xFF, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xF9, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF }; c= *p; if ( (c >= 0x40) && (c <= 0x7f)) *p=l2koi[(c & 0x7f) - 0x40]; if (c=='&') *p='Ω'; } /* teletext to iso8859-7 conversion */ void conv2greek(u8 *p) { u8 c; /* static u8 l2greek[]={ 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xFF, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xF9, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF }; */ static u8 l2greek[]={ /* 1 @ 0x40->ϊ*/0xc0, /* 2 A 0x41->Α*/0xc1, /* 3 B 0x42->Β*/0xc2, /* 4 C 0x43->Γ*/0xc3, /* 5 D 0x44->Δ*/0xc4, /* 6 E 0x45->Ε*/0xc5, /* 7 F 0x46->Ζ*/0xc6, /* 8 G 0x47->Η*/0xc7, /* 9 H 0x48->Θ*/0xc8, /*10 I 0x49->Ι*/0xc9, /*11 J 0x4a->Κ*/0xca, /*12 K 0x4b->Λ*/0xcb, /*13 L 0x4c->Μ*/0xcc, /*14 M 0x4d->Ν*/0xcd, /*15 N 0x4e->Ξ*/0xce, /*16 O 0x4f->Ο*/0xcf, /*17 P 0x50->Π*/0xd0, /*18 Q 0x51->Ρ*/0xd1, /*19 R 0x52->?*/0x52, /*20 S 0x53->Σ*/0xd3, /*21 T 0x54->Τ*/0xd4, /*22 U 0x55->Υ*/0xd5, /*23 V 0x56->Φ*/0xd6, /*24 W 0x57->χ*/0xd7, /*25 X 0x58->Ψ*/0xd8, /*26 Y 0x59->Ω*/0xd9, /*27 Z 0x5a->?*/0x5a, /*28 [ 0x5b->?*/0x5b, /*!29 \ 0x5c->ά*/0xdc, /*!30 ] 0x5d->έ*/0xdd, /*!31 ^ 0x5e->ή*/0xde, /*!32 _ 0x5f->ί*/0xdf, /*33 ` 0x60->?*/0x60, /*!34 a 0x61->α*/0xe1, /*!35 b 0x62->β*/0xe2, /*!36 c 0x63->γ*/0xe3, /*!37 d 0x64->δ*/0xe4, /*!38 e 0x65->ε*/0xe5, /*!39 f 0x66->ζ*/0xe6, /*!40 g 0x67->η*/0xe7, /*!41 h 0x68->θ*/0xe8, /*!42 i 0x69->ι*/0xe9, /*!43 j 0x6a->κ*/0xea, /*!44 k 0x6b->λ*/0xeb, /*!45 l 0x6c->μ*/0xec, /*!46 m 0x6d->ν*/0xed, /*!47 n 0x6e->ξ*/0xee, /*!48 o 0x6f->ο*/0xef, /*!49 p 0x70->π*/0xf0, /*!50 q 0x71->ρ*/0xf1, /*!51 r 0x72->ς*/0xf2, /*!52 s 0x73->σ*/0xf3, /*!53 t 0x74->τ*/0xf4, /*!54 u 0x75->υ*/0xf5, /*!55 v 0x76->φ*/0xf6, /*!56 w 0x77->χ*/0xf7, /*!57 x 0x78->ψ*/0xf8, /*!58 y 0x79->ω*/0xf9, /*59 z 0x7a->ϊ(με τόνο)*/0xc0, /*60 { 0x7b->?*/0x7b, /*!61 | 0x7c->ό*/0xfc, /*!62 } 0x7d->ύ*/0xfd, /*!63 ~ 0x7e->ώ*/0xfe, /*64 0x7f->?*/0x7f }; c= *p; if ( (c >= 0x40) && (c <= 0x7f)) *p=l2greek[(c & 0x7f) - 0x40]; } void init_enhance(struct enhance *eh) { eh->next_des = 0; } void add_enhance(struct enhance *eh, int dcode, u32 *t) { if (dcode == eh->next_des) { memcpy(eh->trip + dcode * 13, t, 13 * sizeof(*t)); eh->next_des++; } else eh->next_des = -1; } void enhance(struct enhance *eh, struct vt_page *vtp) { int row = 0; u32 *p, *e; if (eh->next_des < 1) return; for (p = eh->trip, e = p + eh->next_des * 13; p < e; p++) if (*p % 2048 != 2047) { int adr = *p % 64; int mode = *p / 64 % 32; int data = *p / 2048 % 128; //printf("%2x,%d,%d ", mode, adr, data); if (adr < 40) { // col functions switch (mode) { case 15: // char from G2 set if (adr < W && row < H) if (latin1==LATIN1) vtp->data[row][adr] = g2map_latin1[data-32]; else if (latin1==LATIN2) vtp->data[row][adr] = g2map_latin2[data-32]; break; case 16 ... 31: // char from G0 set with diacritical mark if (adr < W && row < H) { struct mark *mark = marks + (mode - 16); u8 *x; if (x = strchr(mark->g0, data)) if (latin1==LATIN1) data = mark->latin1[x - mark->g0]; else if (latin1==LATIN2) data = mark->latin2[x - mark->g0]; vtp->data[row][adr] = data; } break; } } else { // row functions if ((adr -= 40) == 0) adr = 24; switch (mode) { case 1: // full row color row = adr; break; case 4: // set active position row = adr; break; case 7: // address row 0 (+ full row color) if (adr == 23) row = 0; break; } } } //printf("\n"); } alevt-v1.8.0/lang.h000066400000000000000000000010371345074102600141160ustar00rootroot00000000000000#ifndef LANG_H #define LANG_H #include "misc.h" #include "vt.h" extern int latin1; #define LATIN1 1 #define LATIN2 2 #define KOI8 3 #define GREEK 4 struct enhance { int next_des; // next expected designation code u32 trip[13*16]; // tripplets }; void lang_init(void); void conv2latin(u8 *p, int n, int lang); void conv2koi8(u8 *p); void conv2greek(u8 *p); void init_enhance(struct enhance *eh); void add_enhance(struct enhance *eh, int dcode, u32 *data); void enhance(struct enhance *eh, struct vt_page *vtp); #endif /*LANG_H*/ alevt-v1.8.0/main.c000066400000000000000000000151221345074102600141140ustar00rootroot00000000000000#include #include #include #include #include "vt.h" #include "misc.h" #include "fdset.h" #include "xio.h" #include "vbi.h" #include "lang.h" #include "cache.h" #include "ui.h" int debug = 0; /* current args for next start() */ static char *geometry; static char *dpy_name; static char *vbi_name = NULL; static struct xio *xio; static struct vbi *vbi; static int fine_tune = 1; // auto = 999; static int erc = 1; static int newbttv = -1; static char *progname; static int txtpid = -1; static void usage(FILE *fp, int exitval) { fprintf(fp, "\nUsage: %s [options]\n", prgname); fprintf(fp, "\n" " Valid options:\t\tDefault:\n" " --help\n" " --version\n" " -vbi \t\t/dev/vbi\n" " \t\t/dev/vbi0\n" " \t\t/dev/video0\n" " \t\t/dev/dvb/adapter0/demux0\n" " -display \t\t$DISPLAY\n" " -geometry \t\t41x25\n" " -finetune <-4..4|auto>\t1\n" " -child \n" " [-parent] \t900\n" //" -oldbttv\t\t(for bttv <0.5.20)\n" " -[no]erc\t\t\tenabled\n" " -[no]bell\t\t\tenabled\n" " -charset \tlatin-1\n" " -progname \n" " -pid \n" "\n" " Order is important! Each page number\n" " opens a new window with the previously\n" " given geometry, device, and display.\n" "\n" " ppp[.ss] stands for a page number and an\n" " optional subpage number (ie 123.4). If\n" " the subpage number is omitted the first\n" " transmitted subpage is shown.\n" "\n" " The -child option requires a parent\n" " window. So, it must be preceded by\n" " a parent or another child window.\n" "\n" " To use the DVB interface, use\n" " -vbi /dev/dvb/adapter0/demux0\n" "\n" " The -progname or -pid option specify\n" " the program or teletext PID if using\n" " the DVB interface.\n" ); exit(exitval); } static int arg_pgno(char *p, int *subno) { char *end; int pgno; *subno = ANY_SUB; if (*p) { pgno = strtol(p, &end, 16); if ((*end == ':' || *end == '/' || *end == '.') && end[1]) *subno = strtol(end + 1, &end, 16); if (*end == 0) if (pgno >= 0x100 && pgno <= 0x999) if (*subno == ANY_SUB || (*subno >= 0x00 && *subno <= 0x3f7f)) return pgno; } fatal("%s: invalid page number", p); } static struct vtwin * start(int argc, char **argv, struct vtwin *parent, int pgno, int subno) { static int valid_vbi_name = 1; if (!valid_vbi_name) return parent; if (vbi == 0) vbi = vbi_open(vbi_name, cache_open(), fine_tune, newbttv, progname, txtpid); if (vbi == 0) { if (vbi_name) error("cannot open device: %s", vbi_name); valid_vbi_name = 0; vbi = open_null_vbi(cache_open()); } if (vbi->cache) vbi->cache->op->mode(vbi->cache, CACHE_MODE_ERC, erc); if (xio == 0) xio = xio_open_dpy(dpy_name, argc, argv); if (xio == 0) fatal("cannot open display"); parent = vtwin_new(xio, vbi, geometry, parent, pgno, subno); if (parent == 0) fatal("cannot create window"); if (!valid_vbi_name) { if (vbi_name) send_errmsg(vbi, "cannot open device: %s", vbi_name); else send_errmsg(vbi, "cannot open any device", vbi_name); } return parent; } static int option(int argc, char **argv, int *ind, char **arg) { static struct { char *nam, *altnam; int arg; } opts[] = { { "-vbi", "-dev", 1 }, { "-display", "-d", 1 }, { "-geometry", "-g", 1 }, { "-child", "-c", 1 }, { "-editor", "-ed", 0 }, { "-parent", "-p", 1 }, { "--version", "-v", 0 }, { "--help", "-h", 0 }, { "-newbttv", "-new", 0 }, { "-oldbttv", "-old", 0 }, { "-finetune", "-f", 1 }, { "-debug", "--debug", 0 }, { "-copyright", "-©", 0 }, { "-erc", "-e", 0 }, { "-noerc", "-ne", 0 }, { "-bell", "-b", 0 }, { "-nobell", "-nb", 0 }, { "-charset", "-latin", 1 }, { "-progname", "-pn", 1 }, { "-pid", "--pid", 1 }, }; int i; if (*ind >= argc) return 0; *arg = argv[(*ind)++]; for (i = 0; i < NELEM(opts); ++i) if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam)) { if (opts[i].arg) if (*ind < argc) *arg = argv[(*ind)++]; else fatal("option %s requires an argument", *arg); return i+1; } if (**arg == '-') { fatal("%s: invalid option", *arg); usage(stderr, 1); } return -1; } int main(int argc, char **argv) { struct vtwin *parent = 0; int pgno, subno; int opt, ind; char *arg; setprgname(argv[0]); fdset_init(fds); ind = 1; while (opt = option(argc, argv, &ind, &arg)) switch (opt) { case 1: // vbi vbi_name = arg; vbi = 0; parent = 0; break; case 2: // display dpy_name = arg; xio = 0; parent = 0; break; case 3: // geometry geometry = arg; break; case 4: // child if (parent == 0) fatal("-child requires a parent window"); pgno = arg_pgno(arg, &subno); parent = start(argc, argv, parent, pgno, subno); geometry = 0; break; case 5: // editor enab_editor = 1; break; case 7: // version printf("AleVT Version "VERSION"\n"); exit(0); case 13: // copyright printf("Copyright 2000 by E. Toernig, froese@gmx.de\n"); exit(0); case 8: // help usage(stdout, 0); break; case 9: // newbttv newbttv = 1; break; case 10: // oldbttv newbttv = 0; break; case 11: // finetune if (streq(arg, "auto")) fine_tune = 999; else fine_tune = strtol(arg, 0, 10); break; case 14: // erc erc = 1; break; case 15: // noerc erc = 0; break; case 16: // bell bell = 1; break; case 17: // nobell bell = 0; break; case 18: // charset if (streq(arg, "latin-1") || streq(arg, "1")) latin1 = LATIN1; else if (streq(arg, "latin-2") || streq(arg, "2")) latin1 = LATIN2; else if (streq(arg, "koi8-r") || streq(arg, "koi")) latin1 = KOI8; else if (streq(arg, "iso8859-7") || streq(arg, "el")) latin1 = GREEK; else fatal("bad charset (not latin-1/2/koi8-r/iso8859-7)"); break; case 12: // debug debug++; break; case 19: // progname progname = arg; break; case 20: // pid txtpid = strtoul(arg, NULL, 0); break; case 6: // parent case -1: // non-option arg pgno = arg_pgno(arg, &subno); parent = start(argc, argv, 0, pgno, subno); geometry = 0; break; } if (parent == 0) start(argc, argv, 0, 0x900, ANY_SUB); xio_event_loop(); exit(0); } alevt-v1.8.0/misc.c000066400000000000000000000017751345074102600141340ustar00rootroot00000000000000#include #include #include "misc.h" char *prgname = 0; extern char *strrchr(const char *, int); NORETURN(exit(int)); void setprgname(char *str) { char *x = strrchr(str, '/'); prgname = x ? x+1 : str; } static void print_prgname(void) { if (prgname && *prgname) fprintf(stderr, "%s: ", prgname); } void error(const char *str, ...) { va_list args; va_start(args, str); print_prgname(); vfprintf(stderr, str, args); fputc('\n', stderr); } void ioerror(const char *str) { print_prgname(); perror(str); // fputc('\n', stderr); } void fatal(const char *str, ...) { va_list args; va_start(args, str); print_prgname(); vfprintf(stderr, str, args); fputc('\n', stderr); exit(2); } void fatal_ioerror(const char *str) { print_prgname(); perror(str); // fputc('\n', stderr); exit(2); } void out_of_mem(int size) { if (size > 0) fatal("out of memory allocating %d bytes.", size); fatal("out of memory."); } alevt-v1.8.0/misc.h000066400000000000000000000023061345074102600141300ustar00rootroot00000000000000#ifndef MISC_H #define MISC_H ////////////////////////// // generic macros/typedefs ////////////////////////// #define PTR (void *) #define NELEM(x) ((int)(sizeof(x)/sizeof(*(x)))) #define NORETURN(x) void x __attribute__((__noreturn__)) #define DEFINE(x) typeof(x) x #define OFFSET_OF(type, elem) ((u8 *)&((type *)0)->elem - (u8 *)0) #define BASE_OF(type, elem, p) ((type *)((u8 *)(p) - OFFSET_OF(type, elem))) #define not ! #define streq(a, b) (strcmp((a), (b)) == 0) #define min(a,b) ({ typeof(a) _a = a; typeof(b) _b = b; _a < _b ? _a : _b; }) #define max(a,b) ({ typeof(a) _a = a; typeof(b) _b = b; _a > _b ? _a : _b; }) #define bound(a,b,c) ({ typeof(a) _a = a; typeof(b) _b = b; typeof(c) _c = c; \ _b < _a ? _a : _b > _c ? _c : _b; }) typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; typedef signed char s8; typedef signed short s16; typedef signed int s32; //////////////////////// // prototypes for misc.c //////////////////////// extern char *prgname; void setprgname(char *argv_0); NORETURN(fatal(const char *str, ...)); NORETURN(fatal_ioerror(const char *str)); NORETURN(out_of_mem(int size)); void error(const char *str, ...); void ioerror(const char *str); #endif alevt-v1.8.0/neep9-latin-1.bdf000066400000000000000000001034031345074102600157640ustar00rootroot00000000000000STARTFONT 2.1 FONT -alevt-teletext-medium-r-normal--11-1-75-75-c-60-fontspecific-1 SIZE 1 75 75 FONTBOUNDINGBOX 6 11 0 -2 STARTPROPERTIES 10 POINT_SIZE 1 PIXEL_SIZE 11 RESOLUTION_X 75 RESOLUTION_Y 75 FONT_ASCENT 11 FONT_DESCENT 2 AVERAGE_WIDTH 60 SPACING "C" _XMBDFED_INFO "Edited with xmbdfed 2.4." FONT "vtxt" ENDPROPERTIES CHARS 256 STARTCHAR char0 ENCODING 0 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR char1 ENCODING 1 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 00 00 00 00 00 00 00 ENDCHAR STARTCHAR char2 ENCODING 2 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 00 00 00 00 00 00 00 ENDCHAR STARTCHAR char3 ENCODING 3 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 00 00 00 00 00 00 00 ENDCHAR STARTCHAR char4 ENCODING 4 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 E0 E0 E0 E0 00 00 00 ENDCHAR STARTCHAR char5 ENCODING 5 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 E0 E0 E0 E0 00 00 00 ENDCHAR STARTCHAR char6 ENCODING 6 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C E0 E0 E0 E0 00 00 00 ENDCHAR STARTCHAR char7 ENCODING 7 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC E0 E0 E0 E0 00 00 00 ENDCHAR STARTCHAR char8 ENCODING 8 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 1C 1C 1C 1C 00 00 00 ENDCHAR STARTCHAR char9 ENCODING 9 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 1C 1C 1C 1C 00 00 00 ENDCHAR STARTCHAR char10 ENCODING 10 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 1C 1C 1C 1C 00 00 00 ENDCHAR STARTCHAR char11 ENCODING 11 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 1C 1C 1C 1C 00 00 00 ENDCHAR STARTCHAR char12 ENCODING 12 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 FC FC FC FC 00 00 00 ENDCHAR STARTCHAR char13 ENCODING 13 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 FC FC FC FC 00 00 00 ENDCHAR STARTCHAR char14 ENCODING 14 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C FC FC FC FC 00 00 00 ENDCHAR STARTCHAR char15 ENCODING 15 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC FC FC FC FC 00 00 00 ENDCHAR STARTCHAR char16 ENCODING 16 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 E0 E0 E0 ENDCHAR STARTCHAR char17 ENCODING 17 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 00 00 00 00 E0 E0 E0 ENDCHAR STARTCHAR char18 ENCODING 18 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 00 00 00 00 E0 E0 E0 ENDCHAR STARTCHAR char19 ENCODING 19 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 00 00 00 00 E0 E0 E0 ENDCHAR STARTCHAR char20 ENCODING 20 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 E0 E0 E0 E0 E0 E0 E0 ENDCHAR STARTCHAR char21 ENCODING 21 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 ENDCHAR STARTCHAR char22 ENCODING 22 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C E0 E0 E0 E0 E0 E0 E0 ENDCHAR STARTCHAR char23 ENCODING 23 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC E0 E0 E0 E0 E0 E0 E0 ENDCHAR STARTCHAR char24 ENCODING 24 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 1C 1C 1C 1C E0 E0 E0 ENDCHAR STARTCHAR char25 ENCODING 25 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 1C 1C 1C 1C E0 E0 E0 ENDCHAR STARTCHAR char26 ENCODING 26 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 1C 1C 1C 1C E0 E0 E0 ENDCHAR STARTCHAR char27 ENCODING 27 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 1C 1C 1C 1C E0 E0 E0 ENDCHAR STARTCHAR char28 ENCODING 28 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 FC FC FC FC E0 E0 E0 ENDCHAR STARTCHAR char29 ENCODING 29 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 FC FC FC FC E0 E0 E0 ENDCHAR STARTCHAR char30 ENCODING 30 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C FC FC FC FC E0 E0 E0 ENDCHAR STARTCHAR char31 ENCODING 31 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC FC FC FC FC E0 E0 E0 ENDCHAR STARTCHAR U+0020 space ENCODING 32 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0021 exclamation mark ENCODING 33 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 20 20 20 20 00 20 00 00 ENDCHAR STARTCHAR U+0022 quotation mark ENCODING 34 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 50 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0023 number sign ENCODING 35 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 50 50 F8 50 F8 50 50 00 00 ENDCHAR STARTCHAR U+0024 dollar sign ENCODING 36 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 78 A0 70 28 F0 20 00 00 ENDCHAR STARTCHAR U+0025 percent sign ENCODING 37 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 48 A8 50 20 50 A8 90 00 00 ENDCHAR STARTCHAR U+0026 ampersand ENCODING 38 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 60 90 A0 40 A8 90 68 00 00 ENDCHAR STARTCHAR U+0027 apostrophe ENCODING 39 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 20 40 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0028 left parenthesis ENCODING 40 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 10 20 40 40 40 40 40 20 10 00 ENDCHAR STARTCHAR U+0029 right parenthesis ENCODING 41 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 40 20 10 10 10 10 10 20 40 00 ENDCHAR STARTCHAR U+002a asterisk ENCODING 42 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 50 70 D8 70 50 00 00 00 ENDCHAR STARTCHAR U+002b plus sign ENCODING 43 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 20 20 F8 20 20 00 00 00 ENDCHAR STARTCHAR U+002c comma ENCODING 44 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 30 20 40 00 ENDCHAR STARTCHAR U+002d hyphen-minus ENCODING 45 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 78 00 00 00 00 00 ENDCHAR STARTCHAR U+002e period ENCODING 46 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 20 70 20 00 ENDCHAR STARTCHAR U+002f forward slash ENCODING 47 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 08 08 10 10 20 20 40 40 80 00 ENDCHAR STARTCHAR U+0030 digit zero ENCODING 48 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 50 88 A8 88 50 20 00 00 ENDCHAR STARTCHAR U+0031 digit one ENCODING 49 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 60 A0 20 20 20 20 00 00 ENDCHAR STARTCHAR U+0032 digit two ENCODING 50 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 08 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+0033 digit three ENCODING 51 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 08 10 30 08 88 70 00 00 ENDCHAR STARTCHAR U+0034 digit four ENCODING 52 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 30 50 50 90 F8 10 10 00 00 ENDCHAR STARTCHAR U+0035 digit five ENCODING 53 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 80 F0 88 08 88 70 00 00 ENDCHAR STARTCHAR U+0036 digit six ENCODING 54 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 F0 88 88 70 00 00 ENDCHAR STARTCHAR U+0037 digit seven ENCODING 55 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 08 10 10 20 20 40 00 00 ENDCHAR STARTCHAR U+0038 digit eight ENCODING 56 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 70 88 88 70 00 00 ENDCHAR STARTCHAR U+0039 digit nine ENCODING 57 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 78 08 88 70 00 00 ENDCHAR STARTCHAR U+003a colon ENCODING 58 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 20 70 20 00 20 70 20 00 ENDCHAR STARTCHAR U+003b semicolon ENCODING 59 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 20 70 20 00 30 20 40 00 ENDCHAR STARTCHAR U+003c less-than sign ENCODING 60 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 08 10 20 40 20 10 08 00 00 ENDCHAR STARTCHAR U+003d equals sign ENCODING 61 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 78 00 78 00 00 00 00 ENDCHAR STARTCHAR U+003e greater-than sign ENCODING 62 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 40 20 10 08 10 20 40 00 00 ENDCHAR STARTCHAR U+003f question mark ENCODING 63 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 08 10 20 20 00 20 00 00 ENDCHAR STARTCHAR U+0040 at sign ENCODING 64 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 30 48 98 A8 98 40 30 00 00 ENDCHAR STARTCHAR U+0041 latin capital letter A ENCODING 65 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 F8 88 88 88 00 00 ENDCHAR STARTCHAR U+0042 latin capital letter B ENCODING 66 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 E0 90 90 F0 88 88 F0 00 00 ENDCHAR STARTCHAR U+0043 latin capital letter C ENCODING 67 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 80 80 88 70 00 00 ENDCHAR STARTCHAR U+0044 latin capital letter D ENCODING 68 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 E0 90 88 88 88 90 E0 00 00 ENDCHAR STARTCHAR U+0045 latin capital letter E ENCODING 69 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 80 80 F0 80 80 F8 00 00 ENDCHAR STARTCHAR U+0046 latin capital letter F ENCODING 70 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 80 80 F0 80 80 80 00 00 ENDCHAR STARTCHAR U+0047 latin capital letter G ENCODING 71 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 98 88 88 70 00 00 ENDCHAR STARTCHAR U+0048 latin capital letter H ENCODING 72 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 F8 88 88 88 00 00 ENDCHAR STARTCHAR U+0049 latin capital letter I ENCODING 73 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 20 20 20 20 20 70 00 00 ENDCHAR STARTCHAR U+004a latin capital letter J ENCODING 74 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 38 08 08 08 08 88 70 00 00 ENDCHAR STARTCHAR U+004b latin capital letter K ENCODING 75 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 90 A0 C0 A0 90 88 00 00 ENDCHAR STARTCHAR U+004c latin capital letter L ENCODING 76 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 80 80 80 80 F8 00 00 ENDCHAR STARTCHAR U+004d latin capital letter M ENCODING 77 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 D8 A8 A8 88 88 88 00 00 ENDCHAR STARTCHAR U+004e latin capital letter N ENCODING 78 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 C8 C8 A8 98 98 88 00 00 ENDCHAR STARTCHAR U+004f latin capital letter O ENCODING 79 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+0050 latin capital letter P ENCODING 80 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F0 88 88 F0 80 80 80 00 00 ENDCHAR STARTCHAR U+0051 latin capital letter Q ENCODING 81 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 88 88 A8 70 18 00 ENDCHAR STARTCHAR U+0052 latin capital letter R ENCODING 82 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F0 88 88 F0 A0 90 88 00 00 ENDCHAR STARTCHAR U+0053 latin capital letter S ENCODING 83 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 70 08 88 70 00 00 ENDCHAR STARTCHAR U+0054 latin capital letter T ENCODING 84 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 20 20 20 20 20 20 00 00 ENDCHAR STARTCHAR U+0055 latin capital letter U ENCODING 85 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+0056 latin capital letter V ENCODING 86 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 50 50 20 20 00 00 ENDCHAR STARTCHAR U+0057 latin capital letter W ENCODING 87 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 A8 A8 D8 88 00 00 ENDCHAR STARTCHAR U+0058 latin capital letter X ENCODING 88 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 50 20 50 88 88 00 00 ENDCHAR STARTCHAR U+0059 latin capital letter Y ENCODING 89 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 70 20 20 20 00 00 ENDCHAR STARTCHAR U+005a latin capital letter Z ENCODING 90 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 08 10 20 40 80 F8 00 00 ENDCHAR STARTCHAR U+005b left square bracket ENCODING 91 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 70 40 40 40 40 40 40 40 70 00 ENDCHAR STARTCHAR U+005c backslash ENCODING 92 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 80 40 40 20 20 10 10 08 08 00 ENDCHAR STARTCHAR U+005d right square bracket ENCODING 93 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 70 10 10 10 10 10 10 10 70 00 ENDCHAR STARTCHAR U+005e circumflex ENCODING 94 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 50 88 00 00 00 00 00 00 ENDCHAR STARTCHAR U+005f underscore ENCODING 95 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 F8 00 ENDCHAR STARTCHAR U+0060 grave accent ENCODING 96 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 60 20 10 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0061 latin small letter a ENCODING 97 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+0062 latin small letter b ENCODING 98 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 B0 C8 88 C8 B0 00 00 ENDCHAR STARTCHAR U+0063 latin small letter c ENCODING 99 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 88 80 88 70 00 00 ENDCHAR STARTCHAR U+0064 latin small letter d ENCODING 100 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 08 08 68 98 88 98 68 00 00 ENDCHAR STARTCHAR U+0065 latin small letter e ENCODING 101 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 88 F8 80 78 00 00 ENDCHAR STARTCHAR U+0066 latin small letter f ENCODING 102 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 30 48 40 F0 40 40 40 00 00 ENDCHAR STARTCHAR U+0067 latin small letter g ENCODING 103 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 68 98 88 98 68 08 70 ENDCHAR STARTCHAR U+0068 latin small letter h ENCODING 104 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 B0 C8 88 88 88 00 00 ENDCHAR STARTCHAR U+0069 latin small letter i ENCODING 105 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 00 60 20 20 20 20 00 00 ENDCHAR STARTCHAR U+006a latin small letter j ENCODING 106 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 10 00 30 10 10 10 10 90 60 ENDCHAR STARTCHAR U+006b latin small letter k ENCODING 107 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 90 A0 E0 90 88 00 00 ENDCHAR STARTCHAR U+006c latin small letter l ENCODING 108 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 40 40 40 40 40 40 30 00 00 ENDCHAR STARTCHAR U+006d latin small letter m ENCODING 109 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 D0 A8 A8 A8 88 00 00 ENDCHAR STARTCHAR U+006e latin small letter n ENCODING 110 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 B0 C8 88 88 88 00 00 ENDCHAR STARTCHAR U+006f latin small letter o ENCODING 111 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+0070 latin small letter p ENCODING 112 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 B0 C8 88 C8 B0 80 80 ENDCHAR STARTCHAR U+0071 latin small letter q ENCODING 113 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 68 98 88 98 68 08 08 ENDCHAR STARTCHAR U+0072 latin small letter r ENCODING 114 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 B0 C8 80 80 80 00 00 ENDCHAR STARTCHAR U+0073 latin small letter s ENCODING 115 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 78 80 70 08 F0 00 00 ENDCHAR STARTCHAR U+0074 latin small letter t ENCODING 116 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 40 40 F0 40 40 48 30 00 00 ENDCHAR STARTCHAR U+0075 latin small letter u ENCODING 117 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+0076 latin small letter v ENCODING 118 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 88 50 50 20 00 00 ENDCHAR STARTCHAR U+0077 latin small letter w ENCODING 119 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 A8 A8 A8 50 00 00 ENDCHAR STARTCHAR U+0078 latin small letter x ENCODING 120 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 50 20 50 88 00 00 ENDCHAR STARTCHAR U+0079 latin small letter y ENCODING 121 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 88 88 98 68 08 70 ENDCHAR STARTCHAR U+007a latin small letter z ENCODING 122 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 F8 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+007b left curly brace ENCODING 123 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 18 20 20 20 C0 20 20 20 18 00 ENDCHAR STARTCHAR U+007c vertical bar ENCODING 124 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 20 20 20 20 20 20 20 20 20 00 ENDCHAR STARTCHAR U+007d right curly brace ENCODING 125 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 C0 20 20 20 18 20 20 20 C0 00 ENDCHAR STARTCHAR U+007e tilde ENCODING 126 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 48 A8 90 00 00 00 00 00 00 ENDCHAR STARTCHAR char127 ENCODING 127 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 78 78 78 78 78 00 00 00 ENDCHAR STARTCHAR char128 ENCODING 128 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 1C 1C 1C ENDCHAR STARTCHAR char129 ENCODING 129 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 00 00 00 00 1C 1C 1C ENDCHAR STARTCHAR char130 ENCODING 130 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 00 00 00 00 1C 1C 1C ENDCHAR STARTCHAR char131 ENCODING 131 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 00 00 00 00 1C 1C 1C ENDCHAR STARTCHAR char132 ENCODING 132 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 E0 E0 E0 E0 1C 1C 1C ENDCHAR STARTCHAR char133 ENCODING 133 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 E0 E0 E0 E0 1C 1C 1C ENDCHAR STARTCHAR char134 ENCODING 134 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C E0 E0 E0 E0 1C 1C 1C ENDCHAR STARTCHAR char135 ENCODING 135 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC E0 E0 E0 E0 1C 1C 1C ENDCHAR STARTCHAR char136 ENCODING 136 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 1C 1C 1C 1C 1C 1C 1C ENDCHAR STARTCHAR char137 ENCODING 137 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 1C 1C 1C 1C 1C 1C 1C ENDCHAR STARTCHAR char138 ENCODING 138 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C ENDCHAR STARTCHAR char139 ENCODING 139 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 1C 1C 1C 1C 1C 1C 1C ENDCHAR STARTCHAR char140 ENCODING 140 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 FC FC FC FC 1C 1C 1C ENDCHAR STARTCHAR char141 ENCODING 141 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 FC FC FC FC 1C 1C 1C ENDCHAR STARTCHAR char142 ENCODING 142 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C FC FC FC FC 1C 1C 1C ENDCHAR STARTCHAR char143 ENCODING 143 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC FC FC FC FC 1C 1C 1C ENDCHAR STARTCHAR char144 ENCODING 144 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 FC FC FC ENDCHAR STARTCHAR char145 ENCODING 145 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 00 00 00 00 FC FC FC ENDCHAR STARTCHAR char146 ENCODING 146 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 00 00 00 00 FC FC FC ENDCHAR STARTCHAR char147 ENCODING 147 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 00 00 00 00 FC FC FC ENDCHAR STARTCHAR char148 ENCODING 148 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 E0 E0 E0 E0 FC FC FC ENDCHAR STARTCHAR char149 ENCODING 149 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 E0 E0 E0 E0 FC FC FC ENDCHAR STARTCHAR char150 ENCODING 150 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C E0 E0 E0 E0 FC FC FC ENDCHAR STARTCHAR char151 ENCODING 151 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC E0 E0 E0 E0 FC FC FC ENDCHAR STARTCHAR char152 ENCODING 152 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 1C 1C 1C 1C FC FC FC ENDCHAR STARTCHAR char153 ENCODING 153 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 1C 1C 1C 1C FC FC FC ENDCHAR STARTCHAR char154 ENCODING 154 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 1C 1C 1C 1C FC FC FC ENDCHAR STARTCHAR char155 ENCODING 155 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 1C 1C 1C 1C FC FC FC ENDCHAR STARTCHAR char156 ENCODING 156 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 FC FC FC FC FC FC FC ENDCHAR STARTCHAR char157 ENCODING 157 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 FC FC FC FC FC FC FC ENDCHAR STARTCHAR char158 ENCODING 158 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C FC FC FC FC FC FC FC ENDCHAR STARTCHAR char159 ENCODING 159 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC FC FC FC FC FC FC FC ENDCHAR STARTCHAR U+00a0 seperated gfx mask ENCODING 160 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC 24 24 24 FC 24 24 24 FC 24 24 ENDCHAR STARTCHAR U+00a1 inverted exclamation mark ENCODING 161 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 20 00 20 20 20 20 20 ENDCHAR STARTCHAR U+00a2 cent sign ENCODING 162 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 20 70 A8 A0 A8 70 20 00 ENDCHAR STARTCHAR U+00a3 pound sign ENCODING 163 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 30 48 40 E0 40 40 F8 00 00 ENDCHAR STARTCHAR U+00a4 currency sign ENCODING 164 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 88 70 88 88 70 88 00 00 ENDCHAR STARTCHAR U+00a5 yen sign ENCODING 165 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 50 F8 20 F8 20 20 00 00 ENDCHAR STARTCHAR U+00a6 broken bar ENCODING 166 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 20 20 00 20 20 20 00 00 ENDCHAR STARTCHAR U+00a7 section sign ENCODING 167 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 38 40 30 48 48 30 08 70 00 00 ENDCHAR STARTCHAR U+00a8 smiley ENCODING 168 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 78 FC B4 FC B4 CC 78 00 00 00 ENDCHAR STARTCHAR U+00a9 copyright sign ENCODING 169 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 78 84 94 A4 A4 94 84 78 00 00 ENDCHAR STARTCHAR U+00aa feminine ordinal indicator ENCODING 170 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 08 38 48 38 00 78 00 00 00 ENDCHAR STARTCHAR U+00ab left-pointing double angle quotation mark ENCODING 171 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 28 50 A0 50 28 00 00 00 ENDCHAR STARTCHAR U+00ac not sign ENCODING 172 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 F8 08 08 00 00 00 ENDCHAR STARTCHAR U+00ad soft hyphen ENCODING 173 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 70 00 00 00 00 00 ENDCHAR STARTCHAR U+00ae registered sign ENCODING 174 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 78 84 B4 A4 A4 A4 84 78 00 00 ENDCHAR STARTCHAR U+00af macron ENCODING 175 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+00b0 degree sign ENCODING 176 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 48 30 00 00 00 00 00 00 ENDCHAR STARTCHAR U+00b1 plus-minus sign ENCODING 177 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 20 F8 20 20 00 F8 00 00 ENDCHAR STARTCHAR U+00b2 superscript two ENCODING 178 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 60 90 20 40 F0 00 00 00 00 00 ENDCHAR STARTCHAR U+00b3 superscript three ENCODING 179 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 F0 20 10 90 60 00 00 00 00 00 ENDCHAR STARTCHAR U+00b4 acute accent ENCODING 180 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+00b5 micro sign ENCODING 181 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 90 90 90 E8 80 80 00 ENDCHAR STARTCHAR U+00b6 pilcrow sign ENCODING 182 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 78 A8 A8 68 28 28 28 00 00 ENDCHAR STARTCHAR U+00b7 middle dot ENCODING 183 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 20 70 20 00 00 00 00 ENDCHAR STARTCHAR U+00b8 error sign ENCODING 184 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 0C 18 30 60 FC 18 30 60 C0 00 00 ENDCHAR STARTCHAR U+00b9 superscript one ENCODING 185 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 20 60 20 20 20 00 00 00 00 00 ENDCHAR STARTCHAR U+00ba masculine ordinal indicator ENCODING 186 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 48 48 30 00 78 00 00 00 ENDCHAR STARTCHAR U+00bb right-pointing double angle quotation mark ENCODING 187 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 A0 50 28 50 A0 00 00 00 ENDCHAR STARTCHAR U+00bc vulgar fraction one quarter ENCODING 188 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 40 C0 40 40 48 18 28 78 08 00 00 ENDCHAR STARTCHAR U+00bd vulgar fraction one half ENCODING 189 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 40 C0 40 40 70 48 10 20 78 00 00 ENDCHAR STARTCHAR U+00be vulgar fraction three quarters ENCODING 190 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 F0 20 10 90 68 18 28 78 08 00 ENDCHAR STARTCHAR U+00bf inverted question mark ENCODING 191 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 10 00 10 10 20 40 38 ENDCHAR STARTCHAR U+00c0 latin capital letter A with grave ENCODING 192 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 60 10 00 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+00c1 latin capital letter A with acute ENCODING 193 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+00c2 latin capital letter A with circumflex ENCODING 194 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 48 00 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+00c3 latin capital letter A with tilde ENCODING 195 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 64 98 00 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+00c4 latin capital letter A with diaresis ENCODING 196 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 50 50 00 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+00c5 latin capital letter A with ring above ENCODING 197 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 20 50 20 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+00c6 latin capital ligature AE ENCODING 198 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 78 90 90 F8 90 90 98 00 00 ENDCHAR STARTCHAR U+00c7 latin capital letter C with cedilla ENCODING 199 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 80 80 88 70 10 60 ENDCHAR STARTCHAR U+00c8 latin capital letter E with grave ENCODING 200 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 60 10 00 F8 80 F0 80 80 F8 00 00 ENDCHAR STARTCHAR U+00c9 latin capital letter E with acute ENCODING 201 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 F8 80 F0 80 80 F8 00 00 ENDCHAR STARTCHAR U+00ca latin capital letter E with circumflex ENCODING 202 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 48 00 F8 80 F0 80 80 F8 00 00 ENDCHAR STARTCHAR U+00cb latin capital letter E with diaresis ENCODING 203 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 50 50 00 F8 80 F0 80 80 F8 00 00 ENDCHAR STARTCHAR U+00cc latin capital letter I with grave ENCODING 204 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 60 10 00 70 20 20 20 20 70 00 00 ENDCHAR STARTCHAR U+00cd latin capital letter I with acute ENCODING 205 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 70 20 20 20 20 70 00 00 ENDCHAR STARTCHAR U+00ce latin capital letter I with circumflex ENCODING 206 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 48 00 70 20 20 20 20 70 00 00 ENDCHAR STARTCHAR U+00cf latin capital letter I with diaresis ENCODING 207 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 50 50 00 70 20 20 20 20 70 00 00 ENDCHAR STARTCHAR U+00d0 latin capital letter Eth ENCODING 208 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 48 44 E4 44 48 70 00 00 ENDCHAR STARTCHAR U+00d1 latin capital letter N with tilde ENCODING 209 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 64 98 00 88 C8 A8 98 88 88 00 00 ENDCHAR STARTCHAR U+00d2 latin capital letter O with grave ENCODING 210 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 60 10 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00d3 latin capital letter O with acute ENCODING 211 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00d4 latin capital letter O with circumflex ENCODING 212 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 48 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00d5 latin capital letter O with tilde ENCODING 213 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 64 98 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00d6 latin capital letter O with diaresis ENCODING 214 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 50 50 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00d7 multiplication sign ENCODING 215 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 48 30 30 48 00 00 ENDCHAR STARTCHAR U+00d8 latin capital letter O with stroke ENCODING 216 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 08 70 98 A8 A8 A8 C8 70 80 00 ENDCHAR STARTCHAR U+00d9 latin capital letter U with grave ENCODING 217 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 60 10 00 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00da latin capital letter U with acute ENCODING 218 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00db latin capital letter U with circumflex ENCODING 219 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 48 00 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00dc latin capital letter U with diaresis ENCODING 220 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 50 50 00 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00dd latin capital letter Y with acute ENCODING 221 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 88 88 70 20 20 20 00 00 ENDCHAR STARTCHAR U+00de latin capital letter Thorn ENCODING 222 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 F0 88 F0 80 80 00 00 ENDCHAR STARTCHAR U+00df latin small letter sharp s ENCODING 223 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 60 90 A0 90 88 88 B0 80 00 ENDCHAR STARTCHAR U+00e0 latin small letter a with grave ENCODING 224 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 60 10 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+00e1 latin small letter a with acute ENCODING 225 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+00e2 latin small letter a with circumflex ENCODING 226 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+00e3 latin small letter a with tilde ENCODING 227 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 64 98 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+00e4 latin small letter a with diaresis ENCODING 228 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+00e5 latin small letter a with ring above ENCODING 229 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 20 50 20 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+00e6 latin small ligature ae ENCODING 230 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 D0 28 78 A0 58 00 00 ENDCHAR STARTCHAR U+00e7 latin small letter c with cedilla ENCODING 231 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 88 80 88 70 10 60 ENDCHAR STARTCHAR U+00e8 latin small letter e with grave ENCODING 232 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 60 10 00 70 88 F8 80 78 00 00 ENDCHAR STARTCHAR U+00e9 latin small letter e with acute ENCODING 233 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 70 88 F8 80 78 00 00 ENDCHAR STARTCHAR U+00ea latin small letter e with circumflex ENCODING 234 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 00 70 88 F8 80 78 00 00 ENDCHAR STARTCHAR U+00eb latin small letter e with diaresis ENCODING 235 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 70 88 F8 80 78 00 00 ENDCHAR STARTCHAR U+00ec latin small letter i with grave ENCODING 236 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 C0 20 00 60 20 20 20 20 00 00 ENDCHAR STARTCHAR U+00ed latin small letter i with acute ENCODING 237 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 60 20 20 20 20 00 00 ENDCHAR STARTCHAR U+00ee latin small letter i with circumflex ENCODING 238 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 00 60 20 20 20 20 00 00 ENDCHAR STARTCHAR U+00ef latin small letter i with diaresis ENCODING 239 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 60 20 20 20 20 00 00 ENDCHAR STARTCHAR U+00f0 latin small letter eth ENCODING 240 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 A0 40 A0 10 70 88 88 70 00 00 ENDCHAR STARTCHAR U+00f1 latin small letter n with tilde ENCODING 241 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 64 98 00 B0 C8 88 88 88 00 00 ENDCHAR STARTCHAR U+00f2 latin small letter o with grave ENCODING 242 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 60 10 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00f3 latin small letter o with acute ENCODING 243 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00f4 latin small letter o with circumflex ENCODING 244 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00f5 latin small letter o with tilde ENCODING 245 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 64 98 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00f6 latin small letter o with diaresis ENCODING 246 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00f7 division sign ENCODING 247 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 20 00 F8 00 20 20 00 00 ENDCHAR STARTCHAR U+00f8 latin small letter o with stroke ENCODING 248 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 78 98 A8 C8 F0 00 00 ENDCHAR STARTCHAR U+00f9 latin small letter u with grave ENCODING 249 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 60 10 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+00fa latin small letter u with acute ENCODING 250 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+00fb latin small letter u with circumflex ENCODING 251 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+00fc latin small letter u with diaresis ENCODING 252 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+00fd latin small letter y with acute ENCODING 253 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 88 88 88 98 68 08 70 ENDCHAR STARTCHAR U+00fe latin small letter thorn ENCODING 254 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 B0 C8 88 C8 B0 80 80 ENDCHAR STARTCHAR U+00ff latin small letter y with diaresis ENCODING 255 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 88 88 88 98 68 08 70 ENDCHAR ENDFONT alevt-v1.8.0/neep9-latin-2.bdf000066400000000000000000001040361345074102600157700ustar00rootroot00000000000000STARTFONT 2.1 FONT -alevt-teletext-medium-r-normal--11-1-75-75-c-60-fontspecific-2 SIZE 1 75 75 FONTBOUNDINGBOX 6 11 0 -2 STARTPROPERTIES 10 POINT_SIZE 1 PIXEL_SIZE 11 RESOLUTION_X 75 RESOLUTION_Y 75 FONT_ASCENT 11 FONT_DESCENT 2 AVERAGE_WIDTH 60 SPACING "C" _XMBDFED_INFO "Edited with xmbdfed 2.4." FONT "vtxt" ENDPROPERTIES CHARS 256 STARTCHAR char0 ENCODING 0 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR char1 ENCODING 1 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 00 00 00 00 00 00 00 ENDCHAR STARTCHAR char2 ENCODING 2 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 00 00 00 00 00 00 00 ENDCHAR STARTCHAR char3 ENCODING 3 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 00 00 00 00 00 00 00 ENDCHAR STARTCHAR char4 ENCODING 4 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 E0 E0 E0 E0 00 00 00 ENDCHAR STARTCHAR char5 ENCODING 5 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 E0 E0 E0 E0 00 00 00 ENDCHAR STARTCHAR char6 ENCODING 6 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C E0 E0 E0 E0 00 00 00 ENDCHAR STARTCHAR char7 ENCODING 7 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC E0 E0 E0 E0 00 00 00 ENDCHAR STARTCHAR char8 ENCODING 8 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 1C 1C 1C 1C 00 00 00 ENDCHAR STARTCHAR char9 ENCODING 9 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 1C 1C 1C 1C 00 00 00 ENDCHAR STARTCHAR char10 ENCODING 10 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 1C 1C 1C 1C 00 00 00 ENDCHAR STARTCHAR char11 ENCODING 11 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 1C 1C 1C 1C 00 00 00 ENDCHAR STARTCHAR char12 ENCODING 12 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 FC FC FC FC 00 00 00 ENDCHAR STARTCHAR char13 ENCODING 13 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 FC FC FC FC 00 00 00 ENDCHAR STARTCHAR char14 ENCODING 14 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C FC FC FC FC 00 00 00 ENDCHAR STARTCHAR char15 ENCODING 15 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC FC FC FC FC 00 00 00 ENDCHAR STARTCHAR char16 ENCODING 16 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 E0 E0 E0 ENDCHAR STARTCHAR char17 ENCODING 17 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 00 00 00 00 E0 E0 E0 ENDCHAR STARTCHAR char18 ENCODING 18 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 00 00 00 00 E0 E0 E0 ENDCHAR STARTCHAR char19 ENCODING 19 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 00 00 00 00 E0 E0 E0 ENDCHAR STARTCHAR char20 ENCODING 20 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 E0 E0 E0 E0 E0 E0 E0 ENDCHAR STARTCHAR char21 ENCODING 21 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 ENDCHAR STARTCHAR char22 ENCODING 22 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C E0 E0 E0 E0 E0 E0 E0 ENDCHAR STARTCHAR char23 ENCODING 23 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC E0 E0 E0 E0 E0 E0 E0 ENDCHAR STARTCHAR char24 ENCODING 24 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 1C 1C 1C 1C E0 E0 E0 ENDCHAR STARTCHAR char25 ENCODING 25 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 1C 1C 1C 1C E0 E0 E0 ENDCHAR STARTCHAR char26 ENCODING 26 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 1C 1C 1C 1C E0 E0 E0 ENDCHAR STARTCHAR char27 ENCODING 27 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 1C 1C 1C 1C E0 E0 E0 ENDCHAR STARTCHAR char28 ENCODING 28 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 FC FC FC FC E0 E0 E0 ENDCHAR STARTCHAR char29 ENCODING 29 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 FC FC FC FC E0 E0 E0 ENDCHAR STARTCHAR char30 ENCODING 30 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C FC FC FC FC E0 E0 E0 ENDCHAR STARTCHAR char31 ENCODING 31 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC FC FC FC FC E0 E0 E0 ENDCHAR STARTCHAR U+0020 space ENCODING 32 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0021 exclamation mark ENCODING 33 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 20 20 20 20 00 20 00 00 ENDCHAR STARTCHAR U+0022 quotation mark ENCODING 34 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 50 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0023 number sign ENCODING 35 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 50 50 F8 50 F8 50 50 00 00 ENDCHAR STARTCHAR U+0024 dollar sign ENCODING 36 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 78 A0 70 28 F0 20 00 00 ENDCHAR STARTCHAR U+0025 percent sign ENCODING 37 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 48 A8 50 20 50 A8 90 00 00 ENDCHAR STARTCHAR U+0026 ampersand ENCODING 38 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 60 90 A0 40 A8 90 68 00 00 ENDCHAR STARTCHAR U+0027 apostrophe ENCODING 39 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 20 40 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0028 left parenthesis ENCODING 40 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 10 20 40 40 40 40 40 20 10 00 ENDCHAR STARTCHAR U+0029 right parenthesis ENCODING 41 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 40 20 10 10 10 10 10 20 40 00 ENDCHAR STARTCHAR U+002a asterisk ENCODING 42 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 50 70 D8 70 50 00 00 00 ENDCHAR STARTCHAR U+002b plus sign ENCODING 43 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 20 20 F8 20 20 00 00 00 ENDCHAR STARTCHAR U+002c comma ENCODING 44 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 30 20 40 00 ENDCHAR STARTCHAR U+002d hyphen-minus ENCODING 45 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 78 00 00 00 00 00 ENDCHAR STARTCHAR U+002e period ENCODING 46 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 20 70 20 00 ENDCHAR STARTCHAR U+002f forward slash ENCODING 47 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 08 08 10 10 20 20 40 40 80 00 ENDCHAR STARTCHAR U+0030 digit zero ENCODING 48 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 50 88 A8 88 50 20 00 00 ENDCHAR STARTCHAR U+0031 digit one ENCODING 49 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 60 A0 20 20 20 20 00 00 ENDCHAR STARTCHAR U+0032 digit two ENCODING 50 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 08 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+0033 digit three ENCODING 51 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 08 10 30 08 88 70 00 00 ENDCHAR STARTCHAR U+0034 digit four ENCODING 52 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 30 50 50 90 F8 10 10 00 00 ENDCHAR STARTCHAR U+0035 digit five ENCODING 53 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 80 F0 88 08 88 70 00 00 ENDCHAR STARTCHAR U+0036 digit six ENCODING 54 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 F0 88 88 70 00 00 ENDCHAR STARTCHAR U+0037 digit seven ENCODING 55 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 08 10 10 20 20 40 00 00 ENDCHAR STARTCHAR U+0038 digit eight ENCODING 56 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 70 88 88 70 00 00 ENDCHAR STARTCHAR U+0039 digit nine ENCODING 57 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 78 08 88 70 00 00 ENDCHAR STARTCHAR U+003a colon ENCODING 58 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 20 70 20 00 20 70 20 00 ENDCHAR STARTCHAR U+003b semicolon ENCODING 59 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 20 70 20 00 30 20 40 00 ENDCHAR STARTCHAR U+003c less-than sign ENCODING 60 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 08 10 20 40 20 10 08 00 00 ENDCHAR STARTCHAR U+003d equals sign ENCODING 61 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 78 00 78 00 00 00 00 ENDCHAR STARTCHAR U+003e greater-than sign ENCODING 62 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 40 20 10 08 10 20 40 00 00 ENDCHAR STARTCHAR U+003f question mark ENCODING 63 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 08 10 20 20 00 20 00 00 ENDCHAR STARTCHAR U+0040 at sign ENCODING 64 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 30 48 98 A8 98 40 30 00 00 ENDCHAR STARTCHAR U+0041 latin capital letter A ENCODING 65 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 F8 88 88 88 00 00 ENDCHAR STARTCHAR U+0042 latin capital letter B ENCODING 66 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 E0 90 90 F0 88 88 F0 00 00 ENDCHAR STARTCHAR U+0043 latin capital letter C ENCODING 67 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 80 80 88 70 00 00 ENDCHAR STARTCHAR U+0044 latin capital letter D ENCODING 68 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 E0 90 88 88 88 90 E0 00 00 ENDCHAR STARTCHAR U+0045 latin capital letter E ENCODING 69 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 80 80 F0 80 80 F8 00 00 ENDCHAR STARTCHAR U+0046 latin capital letter F ENCODING 70 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 80 80 F0 80 80 80 00 00 ENDCHAR STARTCHAR U+0047 latin capital letter G ENCODING 71 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 98 88 88 70 00 00 ENDCHAR STARTCHAR U+0048 latin capital letter H ENCODING 72 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 F8 88 88 88 00 00 ENDCHAR STARTCHAR U+0049 latin capital letter I ENCODING 73 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 20 20 20 20 20 70 00 00 ENDCHAR STARTCHAR U+004a latin capital letter J ENCODING 74 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 38 08 08 08 08 88 70 00 00 ENDCHAR STARTCHAR U+004b latin capital letter K ENCODING 75 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 90 A0 C0 A0 90 88 00 00 ENDCHAR STARTCHAR U+004c latin capital letter L ENCODING 76 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 80 80 80 80 F8 00 00 ENDCHAR STARTCHAR U+004d latin capital letter M ENCODING 77 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 D8 A8 A8 88 88 88 00 00 ENDCHAR STARTCHAR U+004e latin capital letter N ENCODING 78 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 C8 C8 A8 98 98 88 00 00 ENDCHAR STARTCHAR U+004f latin capital letter O ENCODING 79 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+0050 latin capital letter P ENCODING 80 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F0 88 88 F0 80 80 80 00 00 ENDCHAR STARTCHAR U+0051 latin capital letter Q ENCODING 81 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 88 88 A8 70 18 00 ENDCHAR STARTCHAR U+0052 latin capital letter R ENCODING 82 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F0 88 88 F0 A0 90 88 00 00 ENDCHAR STARTCHAR U+0053 latin capital letter S ENCODING 83 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 70 08 88 70 00 00 ENDCHAR STARTCHAR U+0054 latin capital letter T ENCODING 84 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 20 20 20 20 20 20 00 00 ENDCHAR STARTCHAR U+0055 latin capital letter U ENCODING 85 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+0056 latin capital letter V ENCODING 86 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 50 50 20 20 00 00 ENDCHAR STARTCHAR U+0057 latin capital letter W ENCODING 87 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 A8 A8 D8 88 00 00 ENDCHAR STARTCHAR U+0058 latin capital letter X ENCODING 88 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 50 20 50 88 88 00 00 ENDCHAR STARTCHAR U+0059 latin capital letter Y ENCODING 89 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 88 88 88 70 20 20 20 00 00 ENDCHAR STARTCHAR U+005a latin capital letter Z ENCODING 90 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 08 10 20 40 80 F8 00 00 ENDCHAR STARTCHAR U+005b left square bracket ENCODING 91 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 70 40 40 40 40 40 40 40 70 00 ENDCHAR STARTCHAR U+005c backslash ENCODING 92 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 80 40 40 20 20 10 10 08 08 00 ENDCHAR STARTCHAR U+005d right square bracket ENCODING 93 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 70 10 10 10 10 10 10 10 70 00 ENDCHAR STARTCHAR U+005e circumflex ENCODING 94 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 50 88 00 00 00 00 00 00 ENDCHAR STARTCHAR U+005f underscore ENCODING 95 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 F8 00 ENDCHAR STARTCHAR U+0060 grave accent ENCODING 96 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 60 20 10 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0061 latin small letter a ENCODING 97 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+0062 latin small letter b ENCODING 98 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 B0 C8 88 C8 B0 00 00 ENDCHAR STARTCHAR U+0063 latin small letter c ENCODING 99 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 88 80 88 70 00 00 ENDCHAR STARTCHAR U+0064 latin small letter d ENCODING 100 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 08 08 68 98 88 98 68 00 00 ENDCHAR STARTCHAR U+0065 latin small letter e ENCODING 101 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 88 F8 80 78 00 00 ENDCHAR STARTCHAR U+0066 latin small letter f ENCODING 102 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 30 48 40 F0 40 40 40 00 00 ENDCHAR STARTCHAR U+0067 latin small letter g ENCODING 103 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 68 98 88 98 68 08 70 ENDCHAR STARTCHAR U+0068 latin small letter h ENCODING 104 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 B0 C8 88 88 88 00 00 ENDCHAR STARTCHAR U+0069 latin small letter i ENCODING 105 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 00 60 20 20 20 20 00 00 ENDCHAR STARTCHAR U+006a latin small letter j ENCODING 106 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 10 00 30 10 10 10 10 90 60 ENDCHAR STARTCHAR U+006b latin small letter k ENCODING 107 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 80 80 90 A0 E0 90 88 00 00 ENDCHAR STARTCHAR U+006c latin small letter l ENCODING 108 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 40 40 40 40 40 40 30 00 00 ENDCHAR STARTCHAR U+006d latin small letter m ENCODING 109 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 D0 A8 A8 A8 88 00 00 ENDCHAR STARTCHAR U+006e latin small letter n ENCODING 110 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 B0 C8 88 88 88 00 00 ENDCHAR STARTCHAR U+006f latin small letter o ENCODING 111 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+0070 latin small letter p ENCODING 112 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 B0 C8 88 C8 B0 80 80 ENDCHAR STARTCHAR U+0071 latin small letter q ENCODING 113 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 68 98 88 98 68 08 08 ENDCHAR STARTCHAR U+0072 latin small letter r ENCODING 114 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 B0 C8 80 80 80 00 00 ENDCHAR STARTCHAR U+0073 latin small letter s ENCODING 115 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 78 80 70 08 F0 00 00 ENDCHAR STARTCHAR U+0074 latin small letter t ENCODING 116 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 40 40 F0 40 40 48 30 00 00 ENDCHAR STARTCHAR U+0075 latin small letter u ENCODING 117 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+0076 latin small letter v ENCODING 118 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 88 50 50 20 00 00 ENDCHAR STARTCHAR U+0077 latin small letter w ENCODING 119 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 A8 A8 A8 50 00 00 ENDCHAR STARTCHAR U+0078 latin small letter x ENCODING 120 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 50 20 50 88 00 00 ENDCHAR STARTCHAR U+0079 latin small letter y ENCODING 121 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 88 88 88 98 68 08 70 ENDCHAR STARTCHAR U+007a latin small letter z ENCODING 122 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 F8 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+007b left curly brace ENCODING 123 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 18 20 20 20 C0 20 20 20 18 00 ENDCHAR STARTCHAR U+007c vertical bar ENCODING 124 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 20 20 20 20 20 20 20 20 20 00 ENDCHAR STARTCHAR U+007d right curly brace ENCODING 125 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 C0 20 20 20 18 20 20 20 C0 00 ENDCHAR STARTCHAR U+007e tilde ENCODING 126 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 48 A8 90 00 00 00 00 00 00 ENDCHAR STARTCHAR char127 ENCODING 127 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 78 78 78 78 78 00 00 00 ENDCHAR STARTCHAR char128 ENCODING 128 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 1C 1C 1C ENDCHAR STARTCHAR char129 ENCODING 129 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 00 00 00 00 1C 1C 1C ENDCHAR STARTCHAR char130 ENCODING 130 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 00 00 00 00 1C 1C 1C ENDCHAR STARTCHAR char131 ENCODING 131 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 00 00 00 00 1C 1C 1C ENDCHAR STARTCHAR char132 ENCODING 132 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 E0 E0 E0 E0 1C 1C 1C ENDCHAR STARTCHAR char133 ENCODING 133 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 E0 E0 E0 E0 1C 1C 1C ENDCHAR STARTCHAR char134 ENCODING 134 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C E0 E0 E0 E0 1C 1C 1C ENDCHAR STARTCHAR char135 ENCODING 135 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC E0 E0 E0 E0 1C 1C 1C ENDCHAR STARTCHAR char136 ENCODING 136 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 1C 1C 1C 1C 1C 1C 1C ENDCHAR STARTCHAR char137 ENCODING 137 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 1C 1C 1C 1C 1C 1C 1C ENDCHAR STARTCHAR char138 ENCODING 138 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C 1C ENDCHAR STARTCHAR char139 ENCODING 139 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 1C 1C 1C 1C 1C 1C 1C ENDCHAR STARTCHAR char140 ENCODING 140 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 FC FC FC FC 1C 1C 1C ENDCHAR STARTCHAR char141 ENCODING 141 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 FC FC FC FC 1C 1C 1C ENDCHAR STARTCHAR char142 ENCODING 142 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C FC FC FC FC 1C 1C 1C ENDCHAR STARTCHAR char143 ENCODING 143 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC FC FC FC FC 1C 1C 1C ENDCHAR STARTCHAR char144 ENCODING 144 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 FC FC FC ENDCHAR STARTCHAR char145 ENCODING 145 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 00 00 00 00 FC FC FC ENDCHAR STARTCHAR char146 ENCODING 146 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 00 00 00 00 FC FC FC ENDCHAR STARTCHAR char147 ENCODING 147 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 00 00 00 00 FC FC FC ENDCHAR STARTCHAR char148 ENCODING 148 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 E0 E0 E0 E0 FC FC FC ENDCHAR STARTCHAR char149 ENCODING 149 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 E0 E0 E0 E0 FC FC FC ENDCHAR STARTCHAR char150 ENCODING 150 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C E0 E0 E0 E0 FC FC FC ENDCHAR STARTCHAR char151 ENCODING 151 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC E0 E0 E0 E0 FC FC FC ENDCHAR STARTCHAR char152 ENCODING 152 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 1C 1C 1C 1C FC FC FC ENDCHAR STARTCHAR char153 ENCODING 153 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 1C 1C 1C 1C FC FC FC ENDCHAR STARTCHAR char154 ENCODING 154 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C 1C 1C 1C 1C FC FC FC ENDCHAR STARTCHAR char155 ENCODING 155 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC 1C 1C 1C 1C FC FC FC ENDCHAR STARTCHAR char156 ENCODING 156 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 FC FC FC FC FC FC FC ENDCHAR STARTCHAR char157 ENCODING 157 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP E0 E0 E0 E0 FC FC FC FC FC FC FC ENDCHAR STARTCHAR char158 ENCODING 158 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 1C 1C 1C 1C FC FC FC FC FC FC FC ENDCHAR STARTCHAR char159 ENCODING 159 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC FC FC FC FC FC FC FC FC FC FC ENDCHAR STARTCHAR U+00a0 seperated gfx mask ENCODING 160 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP FC 24 24 24 FC 24 24 24 FC 24 24 ENDCHAR STARTCHAR U+0104 latin captial letter A with ogonek ENCODING 161 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 88 F8 88 88 88 10 0C ENDCHAR STARTCHAR U+02d8 breve ENCODING 162 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 88 70 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0141 latin capital letter L with stroke ENCODING 163 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 40 50 60 C0 40 40 7C 00 00 ENDCHAR STARTCHAR U+00a4 currency sign ENCODING 164 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 88 70 88 88 70 88 00 00 ENDCHAR STARTCHAR U+013d latin capital letter L with caron ENCODING 165 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 90 60 00 80 80 80 80 80 F8 00 00 ENDCHAR STARTCHAR U+015a latin capital letter S with acute ENCODING 166 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 70 88 60 10 88 70 00 00 ENDCHAR STARTCHAR U+00a7 section sign ENCODING 167 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 38 40 30 48 48 30 08 70 00 00 ENDCHAR STARTCHAR U+00a8 diaresis ENCODING 168 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0160 latin capital letter S with caron ENCODING 169 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 30 00 70 88 60 10 88 70 00 00 ENDCHAR STARTCHAR U+015e latin capital letter S with cedilla ENCODING 170 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 70 08 88 70 10 60 ENDCHAR STARTCHAR U+0164 latin capital letter T with caron ENCODING 171 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 30 00 F8 20 20 20 20 20 00 00 ENDCHAR STARTCHAR U+0179 latin capital letter Z with acute ENCODING 172 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 F8 08 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+00ad soft hyphen ENCODING 173 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 70 00 00 00 00 00 ENDCHAR STARTCHAR U+017d latin capital letter Z with caron ENCODING 174 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 30 00 F8 08 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+017b latin capital letter Z with dot above ENCODING 175 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 20 20 00 F8 08 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+00b0 degree sign ENCODING 176 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 48 30 00 00 00 00 00 00 ENDCHAR STARTCHAR U+0105 latin small letter a with ogonek ENCODING 177 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 08 78 88 78 10 0C ENDCHAR STARTCHAR U+02db ogonek ENCODING 178 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 00 00 00 10 20 18 ENDCHAR STARTCHAR U+0142 latin small letter l with stroke ENCODING 179 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 40 50 60 C0 40 40 30 00 00 ENDCHAR STARTCHAR U+00b4 acute accent ENCODING 180 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+013e latin small letter l with caron ENCODING 181 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 90 60 00 40 40 40 40 40 30 00 00 ENDCHAR STARTCHAR U+015b latin small letter s with acute ENCODING 182 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 78 80 70 08 F0 00 00 ENDCHAR STARTCHAR U+02c7 caron ENCODING 183 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 30 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+00b8 cedilla ENCODING 184 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 0C 18 30 60 FC 18 30 60 C0 00 00 ENDCHAR STARTCHAR U+0161 latin small letter s with caron ENCODING 185 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 30 00 78 80 70 08 F0 00 00 ENDCHAR STARTCHAR U+015f latin small letter s with cedilla ENCODING 186 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 78 80 70 08 F0 10 60 ENDCHAR STARTCHAR U+0165 latin small letter t with caron ENCODING 187 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 90 60 00 40 F0 40 40 48 30 00 00 ENDCHAR STARTCHAR U+017a latin small letter z with acute ENCODING 188 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 F8 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+02dd double acute accent ENCODING 189 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 90 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR U+017e latin small letter z with caron ENCODING 190 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 30 00 F8 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+017c latin small letter z with dot above ENCODING 191 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 20 20 00 F8 10 20 40 F8 00 00 ENDCHAR STARTCHAR U+0154 latin capital letter R with acute ENCODING 192 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 F0 88 88 F0 90 88 00 00 ENDCHAR STARTCHAR U+00c1 latin capital letter A with acute ENCODING 193 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+00c2 latin capital letter A with circumflex ENCODING 194 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 48 00 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+0102 latin capital letter A with breve ENCODING 195 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 88 70 00 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+00c4 latin capital letter A with diaresis ENCODING 196 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 50 50 00 70 88 88 F8 88 88 00 00 ENDCHAR STARTCHAR U+0139 latin capital letter L with acute ENCODING 197 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 60 80 00 80 80 80 80 80 F8 00 00 ENDCHAR STARTCHAR U+0106 latin capital letter C with acute ENCODING 198 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 70 88 80 80 88 70 00 00 ENDCHAR STARTCHAR U+00c7 latin capital letter C with cedilla ENCODING 199 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 88 80 80 80 88 70 10 60 ENDCHAR STARTCHAR U+010c latin capital letter C with caron ENCODING 200 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 30 00 70 88 80 80 88 70 00 00 ENDCHAR STARTCHAR U+00c9 latin capital letter E with acute ENCODING 201 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 F8 80 F0 80 80 F8 00 00 ENDCHAR STARTCHAR U+0118 latin capital letter E with ogonek ENCODING 202 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 80 80 F0 80 80 F8 20 18 ENDCHAR STARTCHAR U+00cb latin capital letter E with diaresis ENCODING 203 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 50 50 00 F8 80 F0 80 80 F8 00 00 ENDCHAR STARTCHAR U+011a latin capital letter E with caron ENCODING 204 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 30 00 F8 80 F0 80 80 F8 00 00 ENDCHAR STARTCHAR U+00cd latin capital letter I with acute ENCODING 205 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 70 20 20 20 20 70 00 00 ENDCHAR STARTCHAR U+00ce latin capital letter I with circumflex ENCODING 206 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 48 00 70 20 20 20 20 70 00 00 ENDCHAR STARTCHAR U+010e latin capital letter D with caron ENCODING 207 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 30 00 E0 90 88 88 90 E0 00 00 ENDCHAR STARTCHAR U+0110 latin capital letter D with stroke ENCODING 208 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 70 48 44 E4 44 48 70 00 00 ENDCHAR STARTCHAR U+0143 latin capital letter N with acute ENCODING 209 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 88 C8 A8 98 88 88 00 00 ENDCHAR STARTCHAR U+0147 latin capital letter N with caron ENCODING 210 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 30 00 88 C8 A8 98 88 88 00 00 ENDCHAR STARTCHAR U+00d3 latin capital letter O with acute ENCODING 211 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00d4 latin capital letter O with circumflex ENCODING 212 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 48 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+0150 latin capital letter O with double acute ENCODING 213 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 90 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00d6 latin capital letter O with diaresis ENCODING 214 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 50 50 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00d7 multiplication sign ENCODING 215 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 00 48 30 30 48 00 00 ENDCHAR STARTCHAR U+0158 latin capital letter R with caron ENCODING 216 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 30 00 F0 88 88 F0 90 88 00 00 ENDCHAR STARTCHAR U+016e latin capital letter U with ring above ENCODING 217 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 20 50 20 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00da latin capital letter U with acute ENCODING 218 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+0170 latin capital letter U with double acute ENCODING 219 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 48 90 00 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00dc latin capital letter U with diaresis ENCODING 220 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 50 50 00 88 88 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00dd latin capital letter Y with acute ENCODING 221 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 88 88 70 20 20 20 00 00 ENDCHAR STARTCHAR U+0162 latin capital letter T with cedilla ENCODING 222 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 F8 20 20 20 20 20 20 10 60 ENDCHAR STARTCHAR U+00df latin small letter sharp s ENCODING 223 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 60 90 A0 90 88 88 B0 80 00 ENDCHAR STARTCHAR U+0155 latin small letter r with acute ENCODING 224 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 B0 C8 80 80 80 00 00 ENDCHAR STARTCHAR U+00e1 latin small letter a with acute ENCODING 225 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+00e2 latin small letter a with circumflex ENCODING 226 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+0103 latin small letter a with breve ENCODING 227 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 88 70 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+00e4 latin small letter a with diaresis ENCODING 228 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 70 08 78 88 78 00 00 ENDCHAR STARTCHAR U+013a latin small letter l with acute ENCODING 229 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 30 40 00 40 40 40 40 40 30 00 00 ENDCHAR STARTCHAR U+0107 latin small letter c with acute ENCODING 230 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 70 88 80 88 70 00 00 ENDCHAR STARTCHAR U+00e7 latin small letter c with cedilla ENCODING 231 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 88 80 88 70 10 60 ENDCHAR STARTCHAR U+010d latin small letter c with caron ENCODING 232 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 30 00 70 88 80 88 70 00 00 ENDCHAR STARTCHAR U+00e9 latin small letter e with acute ENCODING 233 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 70 88 F8 80 78 00 00 ENDCHAR STARTCHAR U+0119 latin small letter e with ogonek ENCODING 234 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 00 00 70 88 F8 80 78 20 18 ENDCHAR STARTCHAR U+00eb latin small letter e with diaresis ENCODING 235 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 70 88 F8 80 78 00 00 ENDCHAR STARTCHAR U+011b latin small letter e with caron ENCODING 236 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 30 00 70 88 F8 80 78 00 00 ENDCHAR STARTCHAR U+00ed latin small letter i with acute ENCODING 237 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 60 20 20 20 20 00 00 ENDCHAR STARTCHAR U+00ee latin small letter i with circumflex ENCODING 238 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 00 60 20 20 20 20 00 00 ENDCHAR STARTCHAR U+010f latin small letter d with caron ENCODING 239 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 90 60 08 08 68 98 88 98 68 00 00 ENDCHAR STARTCHAR U+0111 latin small letter d with stroke ENCODING 240 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 1C 08 68 98 88 98 68 00 00 ENDCHAR STARTCHAR U+0144 latin small letter n with acute ENCODING 241 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 B0 C8 88 88 88 00 00 ENDCHAR STARTCHAR U+0148 latin small letter n with caron ENCODING 242 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 30 00 B0 C8 88 88 88 00 00 ENDCHAR STARTCHAR U+00f3 latin small letter o with acute ENCODING 243 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00f4 latin small letter o with circumflex ENCODING 244 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 48 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+0151 latin small letter o with double acute ENCODING 245 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 90 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00f6 latin small letter o with diaresis ENCODING 246 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 70 88 88 88 70 00 00 ENDCHAR STARTCHAR U+00f7 division sign ENCODING 247 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 20 20 00 F8 00 20 20 00 00 ENDCHAR STARTCHAR U+0159 latin small letter r with caron ENCODING 248 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 30 00 B0 C8 80 80 80 00 00 ENDCHAR STARTCHAR U+016f latin small letter u with ring above ENCODING 249 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 20 50 20 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+00fa latin small letter u with acute ENCODING 250 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+0171 latin small letter u with double acute ENCODING 251 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 48 90 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+00fc latin small letter u with diaresis ENCODING 252 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 50 50 00 88 88 88 98 68 00 00 ENDCHAR STARTCHAR U+00fd latin small letter y with acute ENCODING 253 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 30 40 00 88 88 88 98 68 08 70 ENDCHAR STARTCHAR U+0163 latin small letter t with cedilla ENCODING 254 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 00 40 40 F0 40 40 48 30 10 60 ENDCHAR STARTCHAR U+02d9 dot above ENCODING 255 SWIDTH 5760 0 DWIDTH 6 0 BBX 6 11 0 -2 BITMAP 00 20 20 00 00 00 00 00 00 00 00 ENDCHAR ENDFONT alevt-v1.8.0/os.h000066400000000000000000000002471345074102600136200ustar00rootroot00000000000000#ifndef OS_H #define OS_H #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBsd__) \ || defined(__bsdi__) #define BSD #endif #endif /* OS_H */ alevt-v1.8.0/search.c000066400000000000000000000037301345074102600144370ustar00rootroot00000000000000#include // for freebsd #include #include "vt.h" #include "misc.h" #include "cache.h" #include "search.h" static void convert(u8 *p, u8 *buf, int *line) { int x, y, c, ch, gfx, hid = 0; for (y = 1, p += 40; y < 25; ++y) { if (not hid) { gfx = 0; for (x = 0; x < 40; ++x) { c = ' '; switch (ch = *p++) { case 0x00 ... 0x07: gfx = 0; break; case 0x10 ... 0x17: gfx = 1; break; case 0x0c: hid = 1; break; case 0x7f: c = '*'; break; case 0x20 ... 0x7e: if (gfx && ch != ' ' && (ch & 0xa0) == 0x20) ch = '#'; case 0xa0 ... 0xff: c= ch; } *buf++ = c; } *buf++ = '\n'; *line++ = y; } else { p += 40; hid = 0; } } *line = y; *buf = 0; } static int search_pg(struct search *s, struct vt_page *vtp) { regmatch_t m[1]; u8 buf[H *(W+1) + 1]; int line[H]; convert(PTR vtp->data, buf, line); if (regexec(s->pattern, buf, 1, m, 0) == 0) { s->len = 0; if (m->rm_so >= 0) { s->y = line[m->rm_so / (W+1)]; s->x = m->rm_so % (W+1); s->len = m->rm_eo - m->rm_so; if (s->x + s->len > 40) s->len = 40 - s->x; } return 1; } return 0; } struct search * search_start(struct cache *ca, u8 *pattern) { struct search *s; int f = 0; if (not(s = malloc(sizeof(*s)))) goto fail1; if (pattern[0] == '!') pattern++; else f = REG_ICASE; if (regcomp(s->pattern, pattern, f | REG_NEWLINE) != 0) goto fail2; s->cache = ca; return s; fail2: free(s); fail1: return 0; } void search_end(struct search *s) { regfree(s->pattern); free(s); } int search_next(struct search *s, int *pgno, int *subno, int dir) { struct vt_page *vtp = 0; if (s->cache) vtp = s->cache->op->foreach_pg(s->cache, *pgno, *subno, dir, search_pg, s); if (vtp == 0) return -1; *pgno = vtp->pgno; *subno = vtp->subno ?: ANY_SUB; return 0; } alevt-v1.8.0/search.h000066400000000000000000000005271345074102600144450ustar00rootroot00000000000000#ifndef SEARCH_H #define SEARCH_H #include struct search { struct cache *cache; regex_t pattern[1]; int x, y, len; // the position of the match }; struct search *search_start(struct cache *ca, u8 *pattern); void search_end(struct search *s); int search_next(struct search *s, int *pgno, int *subno, int dir); #endif alevt-v1.8.0/ui.c000066400000000000000000000413671345074102600136170ustar00rootroot00000000000000#include #include #include #include #include #include #include #include "vt.h" #include "misc.h" #include "xio.h" #include "vbi.h" #include "fdset.h" #include "edit.h" #include "edline.h" #include "search.h" #include "export.h" #include "ui.h" int enab_editor = 0; static char save_format[EDLEN] = "ascii"; // just to remember prev format // forward references static void vtwin_event(struct vtwin *w, struct vt_event *ev); static void msg(struct vtwin *w, u8 *str, ...); static void err(struct vtwin *w, u8 *str, ...); #define hist(w,o) ((w)->hist + (((w)->hist_top + (o)) & (N_HISTORY-1))) static int inc_hex(int i, int bcd_mode) { i++; if (bcd_mode) { if ((i & 0x000f) > 0x0009) i = (i + 0x0010) & 0x0ff0; if ((i & 0x00f0) > 0x090) i = (i + 0x0100) & 0x0f00; if ((i & 0x0f00) > 0x0900) i = (i + 0x1000) & 0xf000; } return i; } static int dec_hex(int i, int bcd_mode) { i--; if (bcd_mode) { if ((i & 0x000f) > 0x0009) i = (i & 0xfff0) + 0x0009; if ((i & 0x00f0) > 0x0090) i = (i & 0xff00) + 0x0099; if ((i & 0x0f00) > 0x0900) i = (i & 0xf000) + 0x0999; } return i; } static void set_title(struct vtwin *w) { char buf[32], buf2[32]; if (w->subno == ANY_SUB) sprintf(buf, "%x", w->pgno); else sprintf(buf, "%x/%x", w->pgno, w->subno); if (w->searching) sprintf(buf2, "(%s)", buf); else sprintf(buf2, "%s", buf); xio_title(w->xw, buf2); } static void query_page(struct vtwin *w, int pgno, int subno) { //printf("query %03x/%04x\n",pgno,subno); w->pgno = pgno; w->subno = subno; w->searching = 1; w->hold = 0; //subno != ANY_SUB; xio_set_concealed(w->xw, w->revealed = 0); if (hist(w, 0)->pgno != pgno || (hist(w,0)->subno == ANY_SUB && subno != ANY_SUB)) w->hist_top++; hist(w, 0)->pgno = pgno; hist(w, 0)->subno = subno; hist(w, 1)->pgno = 0; // end marker xio_cancel_selection(w->xw); if (vbi_query_page(w->vbi, pgno, subno) == 0) { w->vtp = 0; //xio_clear_win(w->xw); } set_title(w); } static void new_or_query(struct vtwin *w, int pgno, int subno, int new_win) { if (new_win) { if (w->child) query_page(w->child, pgno, subno); else vtwin_new(w->xw->xio, w->vbi, 0, w, pgno, subno); } else query_page(w, pgno, subno); } static int _next_pgno(int *arg, struct vt_page *vtp) { int pgno = vtp->pgno; if (arg[0] == pgno) // want different page return 0; if (arg[1]) // and not a hex page for (; pgno; pgno >>=4) if ((pgno & 15) > 9) return 0; return 1; } static int _next_subno(int *arg, struct vt_page *vtp) { return vtp->pgno == arg[0]; // only subpages of this page } static void do_next_pgno(struct vtwin *w, int dir, int bcd_mode, int subs, int new_win) { struct vt_page *vtp; struct vtwin *cw = (new_win && w->child) ? w->child : w; int pgno = cw->pgno; int subno = cw->subno; if (w->vbi->cache) { int arg[2]; arg[0] = pgno; arg[1] = bcd_mode; if (vtp = w->vbi->cache->op->foreach_pg(w->vbi->cache, pgno, subno, dir, subs ? _next_subno:_next_pgno, &arg)) { new_or_query(w, vtp->pgno, subs ? vtp->subno : ANY_SUB, new_win); return; } } //TODO: implement old behaviour (just inc/dec pgno/subno) err(w, "No page."); } #define notdigit(x) (not isdigit((x))) static int chk_screen_fromto(u8 *p, int x, int *n1, int *n2) { p += x; if (x >= 0 && x+5 < 42) if (notdigit(p[1]) || notdigit(p[0])) if (isdigit(p[2])) if (p[3] == '/' || p[3] == ':') if (isdigit(p[4])) if (notdigit(p[5]) || notdigit(p[6])) /* p[6] is save here */ { *n1 = p[2] % 16; if (isdigit(p[1])) *n1 += p[1] % 16 * 16; *n2 = p[4] % 16; if (isdigit(p[5])) *n2 = *n2 * 16 + p[5] % 16; return 1; } return 0; } static int chk_screen_pgno(u8 *p, int x, int *pgno, int *subno) { p += x; if (x >= 0 && x+4 < 42) if (notdigit(p[0]) && notdigit(p[4])) if (isdigit(p[1]) && isdigit(p[2]) && isdigit(p[3])) { *pgno = p[1] % 16 * 256 + p[2] % 16 * 16 + p[3] % 16; if (*pgno >= 0x100 && *pgno <= 0x999) { *subno = ANY_SUB; if (x+6 < 42) if (p[4] == '.' || p[4] == '/') if (isdigit(p[5])) if (notdigit(p[6]) || notdigit(p[7])) /* p[7] is save here */ { *subno = p[5] % 16; if (isdigit(p[6])) *subno = *subno * 16 + p[6] % 16; } // hackhackhack: // pgno followed by start box gets subno 1 if (x+4 < 42 && p[4] == 11) *subno = 1; return 1; } } return 0; } static void do_screen_pgno(struct vtwin *w, int x, int y, int new_win) { u8 buf[42]; int n1, n2, i; if (x >= 0 && x < 40) { if (xio_get_line(w->xw, y, buf+1) == 0) { buf[0] = buf[41] = ' '; x++; for (i = -6; i < 35; i++) { if (w->vtp == 0 || w->vtp->subno != 0) if (chk_screen_fromto(buf, x+i, &n1, &n2)) { // subno cycling works wrong with children. // so middle button cycles backwards... if (w->subno != ANY_SUB) n1 = w->subno; n1 = new_win ? dec_hex(n1, 1) : inc_hex(n1, 1); if (n1 < 1) n1 = n2; if (n1 > n2) n1 = 1; new_or_query(w, w->pgno, n1, 0); return; } if (i >= -4) if (chk_screen_pgno(buf, x+i, &n1, &n2)) { new_or_query(w, n1, n2, new_win); return; } } } } err(w, "No page."); } static void do_flof_pgno(struct vtwin *w, int button, int x, int new_win) { struct vt_page *vtp = w->vtp; int lk = 99, i, c; if (vtp && vtp->flof) { switch (button) { case 1 ... 3: for (i = 0; i <= x && i < 40; ++i) if ((c = vtp->data[24][i]) < 8) // fg-color code lk = c; lk = "x\0\1\2\3x\3x"[lk]; // color -> link# break; case KEY_F(1): lk = 0; break; case KEY_F(2): lk = 1; break; case KEY_F(3): lk = 2; break; case KEY_F(4): lk = 3; break; case KEY_F(5): lk = 5; break; } if (lk < 6 && (vtp->link[lk].pgno & 0xff) != 0xff) { new_or_query(w, vtp->link[lk].pgno, vtp->link[lk].subno, new_win); return; } } else { switch (button) { case 1 ... 3: lk = x / 8; break; case KEY_F(1): lk = 0; break; case KEY_F(2): lk = 1; break; case KEY_F(3): lk = 2; break; case KEY_F(4): lk = 3; break; case KEY_F(5): lk = 4; break; } switch (lk) { case 0: new_or_query(w, 0x100, ANY_SUB, new_win); return; case 1: do_next_pgno(w, -1, 1, 0, new_win); return; case 2: new_or_query(w, 0x900, ANY_SUB, new_win); return; case 3: do_next_pgno(w, 1, 1, 0, new_win); return; case 4: new_or_query(w, 0x999, ANY_SUB, new_win); return; } } err(w, "No page."); } static void do_hist_pgno(struct vtwin *w) { if (hist(w, -1)->pgno) { w->hist_top--; query_page(w, hist(w, 0)->pgno, hist(w, 0)->subno); } else err(w, "Empty history."); } static void put_head_line(struct vtwin *w, u8 *p) { char buf[40]; if (p == 0) xio_get_line(w->xw, 0, buf); else memcpy(buf + 8, p + 8, 32); if (w->subno == ANY_SUB) sprintf(buf, "\2%3x \5\xb7", w->pgno); else sprintf(buf, "\2S%02x \5\xb7", w->subno & 0xff); if (w->searching) buf[0] = 1; if (w->hold) buf[4] = 'H'; if (w->xw->concealed) buf[6] = '*'; buf[7] = 7; xio_put_line(w->xw, 0, buf); } static void put_menu_line(struct vtwin *w) { if (w->edline) return; if (w->status > 0) xio_put_line(w->xw, 24, w->statusline); else if (w->vtp && w->vtp->flof) xio_put_line(w->xw, 24, w->vtp->data[24]); else xio_put_line(w->xw, 24, "\0 100 \4<< \6Help \4>>\0 999 "); } static void _msg(struct vtwin *w, u8 *str, va_list args) { u8 buf[128]; int i; i = vsprintf(buf, str, args); if (i > W) i = W; memset(w->statusline, ' ', W); memcpy(w->statusline + (W-i+1)/2, buf, i); //w->statusline[0] = 3; w->status = 6; // 2 seconds. put_menu_line(w); } static void msg(struct vtwin *w, u8 *str, ...) { va_list args; va_start(args, str); _msg(w, str, args); va_end(args); } static void err(struct vtwin *w, u8 *str, ...) { va_list args; va_start(args, str); _msg(w, str, args); va_end(args); xio_bell(w->xw); } static void next_search(struct vtwin *w, int rev) { if (w->search) { int pgno = w->pgno; int subno = w->subno; int dir = rev ? -w->searchdir : w->searchdir; if (search_next(w->search, &pgno, &subno, dir) == 0) { query_page(w, pgno, subno); if (not w->searching && w->search->len) xio_set_selection(w->xw, w->search->x, w->search->y, w->search->x + w->search->len - 1, w->search->y); return; } else err(w, "Pattern not found."); } else err(w, "No search pattern."); } static void start_search(struct vtwin *w, u8 *string) { w->edline = 0; put_menu_line(w); if (not string) return; if (*string) { if (w->search) search_end(w->search); w->search = search_start(w->vbi->cache, string); if (w->search == 0) { err(w, "Bad search pattern."); return; } } next_search(w, 0); } static void start_save2(struct vtwin *w, u8 *name) { w->edline = 0; if (name && *name) if (export(w->export, w->vtp, name)) err(w, export_errstr()); export_close(w->export); w->export = 0; put_menu_line(w); } static void start_save1(struct vtwin *w, u8 *format) { char *name; w->edline = 0; if (format && *format) { strcpy(save_format, format); // remember for next time if (w->export = export_open(format)) { if (name = export_mkname(w->export, "ttext-%p.%e", w->vtp, 0)) { w->edline = edline_new(w->xw, "Name:\2", name, start_save2, w); free(name); return; } free(name); export_close(w->export); w->export = 0; } err(w, export_errstr()); } put_menu_line(w); } struct vtwin * vtwin_new(struct xio *xio, struct vbi *vbi, char *geom, struct vtwin *parent, int pgno, int subno) { struct vtwin *w; if (not(w = malloc(sizeof(*w)))) goto fail1; if (not (w->xw = xio_open_win(xio, geom))) goto fail2; w->vbi = vbi; w->vtp = 0; w->edline = 0; w->search = 0; w->export = 0; w->parent = parent; w->child = 0; if (parent && parent->child) fatal("internal error: parent already has a child != 0"); if (parent) parent->child = w; w->hist_top = 1; hist(w,0)->pgno = 0; hist(w,1)->pgno = 0; w->status = 0; xio_set_handler(w->xw, vtwin_event, w); vbi_add_handler(w->vbi, vtwin_event, w); query_page(w, pgno, subno); return w; fail2: free(w); fail1: return 0; } static void vtwin_close(struct vtwin *w) { if (w->parent) w->parent->child = w->child; if (w->child) w->child->parent = w->parent; if (w->edline) edline_abort(w->edline); if (w->search) search_end(w->search); if (w->export) export_close(w->export); vbi_del_handler(w->vbi, vtwin_event, w); xio_close_win(w->xw, 1); free(w); } static void vtwin_event(struct vtwin *w, struct vt_event *ev) { struct xio_win *xw = w->xw; int i; switch (ev->type) { case EV_CLOSE: vtwin_close(w); break; case EV_TIMER: if (w->status > 0 && --w->status == 0) put_menu_line(w); break; case EV_KEY: { switch (ev->i1) { case '0' ... '9': i = ev->i1 - '0'; if (w->pgno >= 0x100) { if (i == 0) // || i == 9) break; w->pgno = i; } else { w->pgno = w->pgno * 16 + i; if (w->pgno >= 0x100) query_page(w, w->pgno, ANY_SUB); } break; case 'q': case '\e': vtwin_close(w); break; case 'h': query_page(w, 0x900, ANY_SUB); break; case 'E': if (enab_editor) edwin_new(xw->xio, w->vbi, w->pgno, w->subno); else err(w, "Unused key."); break; case 'b': bell = !bell; msg(w, "Error bell %sabled.", bell ? "en" : "dis"); break; case 'e': if (w->vbi->cache) { i = w->vbi->cache->op->mode(w->vbi->cache, CACHE_MODE_ERC, 0); w->vbi->cache->op->mode(w->vbi->cache, CACHE_MODE_ERC, !i); msg(w, "Error reduction %sabled.", i ? "dis" : "en"); } break; case 'o': if (vtwin_new(xw->xio, w->vbi, 0, 0, w->pgno, w->subno) == 0) err(w, "Unable to open new window."); break; case KEY_RIGHT: do_next_pgno(w, 1, not ev->i2, 0, 0); break; case KEY_LEFT: do_next_pgno(w, -1, not ev->i2, 0, 0); break; case KEY_UP: do_next_pgno(w, -1, not ev->i2, 1, 0); break; case KEY_DOWN: do_next_pgno(w, 1, not ev->i2, 1, 0); break; case '\b': do_hist_pgno(w); break; case ' ': w->hold = !w->hold; break; case 'c': vbi_reset(w->vbi); break; case 'i': if (w->vtp && w->vtp->flof && (w->vtp->link[5].pgno & 0xff) != 0xff) query_page(w, w->vtp->link[5].pgno, w->vtp->link[5].subno); else query_page(w, 0x100, ANY_SUB); break; case 'r': xio_set_concealed(xw, w->revealed = !w->revealed); break; case KEY_F(1) ... KEY_F(5): do_flof_pgno(w, ev->i1, 0, ev->i2); break; case '/': if (w->edline) { err(w, "internal: w->edline != 0"); break;} w->searchdir = 1; w->edline = edline_new(xw, "/", "", start_search, w); break; case '?': if (w->edline) { err(w, "internal: w->edline != 0"); break;} w->searchdir = -1; w->edline = edline_new(xw, "?", "", start_search, w); break; case 's': if (w->edline) { err(w, "internal: w->edline != 0"); break;} w->edline = edline_new(xw, "Format:\2", save_format, start_save1, w); break; case 'n': next_search(w, 0); break; case 'N': next_search(w, 1); break; case 'f': case 'F': vbi_pll_reset(w->vbi, w->vbi->pll_adj + (ev->i1 == 'f' ? 1 : -1)); if (w->vbi->pll_fixed) msg(w, "Finetune fixed at %d.", w->vbi->pll_adj); else msg(w, "Finetune auto adjusting."); break; default: err(w, "Unused key."); break; } break; } case EV_RESET: { if (w->search) search_end(w->search); w->search = 0; query_page(w, w->pgno, w->subno); msg(w, "Cache cleared!");//@@@ break; } case EV_MOUSE: { if (ev->i1 == 3) do_hist_pgno(w); else if (ev->i1 == 5) // wheel mouse do_next_pgno(w, 1, not ev->i2, 0, 0); else if (ev->i1 == 4) // wheel mouse do_next_pgno(w, -1, not ev->i2, 0, 0); else if (ev->i1 == 7) // dual wheel mouse do_next_pgno(w, 1, not ev->i2, 1, 0); else if (ev->i1 == 6) // dual wheel mouse do_next_pgno(w, -1, not ev->i2, 1, 0); else if (ev->i4 == 24) do_flof_pgno(w, ev->i1, ev->i3, ev->i1 == 2); else if (ev->i4 == 0 && ev->i3 < 5) { if (ev->i1 == 1) w->hold = !w->hold; else vtwin_new(xw->xio, w->vbi, 0, 0, w->pgno, w->subno); } else if (ev->i4 == 0 && ev->i3 < 8) { if (ev->i1 == 2 && w->child) w = w->child; xio_set_concealed(w->xw, w->revealed = !w->revealed); } else do_screen_pgno(w, ev->i3, ev->i4, ev->i1 == 2); break; } case EV_PAGE: { struct vt_page *vtp = ev->p1; if (0) if (vtp->errors) printf("errors=%4d\n",vtp->errors); if (w->searching || not(w->hold || ev->i1)) if (vtp->pgno == w->pgno) if (w->subno == ANY_SUB || vtp->subno == w->subno) { w->searching = 0; w->vtp = vtp; put_head_line(w, vtp->data[0]); for (i = 1; i < 24; ++i) xio_put_line(w->xw, i, vtp->data[i]); put_menu_line(w); set_title(w); } break; } case EV_HEADER: { u8 *p = ev->p1; int hdr_mag = ev->i1 / 256; int flags = ev->i3; int mag = w->pgno; if (mag >= 0x10) mag = mag >> 4; if (mag >= 0x10) mag = mag >> 4; //printf("%d %02x %.40s\n",hdr_mag,flags,p); if (flags & PG_OUTOFSEQ) p = 0; else if (~flags & PG_MAGSERIAL) if (mag != hdr_mag) p = 0; put_head_line(w, p); break; } case EV_XPACKET: { #if 0 /* VPS data (seems to be unused in .de */ u8 *p = ev->p1; if (ev->i1 == 8 && ev->i2 == 30 && p[0]/2 == 1) { int i; int pil, cni, pty, misc; for (i = 7; i < 20; ++i) p[i] = hamm8(p+i, &ev->i3); if (ev->i3 & 0xf000) /* uncorrectable errors */ break; cni = p[9] + p[15]/4*16 + p[16]%4*64 + p[10]%4*256 + p[16]/4*1024 + p[17]*4096; pty = p[18] + p[19]*16; pil = p[10]/4 + p[11]*4 + p[12]*64 + p[13]*1024 + p[14]*16384 + p[15]%4*262144; misc = p[7] + p[8]*16; err(w, "%02x %04x %05x %02x: %.20s", misc, cni, pil, pty, p+20); } #endif break; } case EV_ERR: { char *errmsg = ev->p1; if (errmsg != NULL && *errmsg != '\0') { err(w, errmsg); w->status = 30; ev->p1 = NULL; free(errmsg); } break; } } } alevt-v1.8.0/ui.h000066400000000000000000000013561345074102600136160ustar00rootroot00000000000000#ifndef UI_H #define UI_H #include "vt.h" #include "xio.h" #include "vbi.h" #include "edline.h" #include "search.h" extern int enab_editor; #define N_HISTORY (1 << 6) // number of history entries struct vtwin { struct vtwin *parent, *child; struct xio_win *xw; struct vbi *vbi; struct { int pgno; int subno; } hist[N_HISTORY]; int hist_top; int searching; int revealed; int hold; int pgno, subno; struct vt_page *vtp; struct edline *edline; struct search *search; int searchdir; int status; u8 statusline[W+1]; struct export *export; }; extern struct vtwin *vtwin_new(struct xio *xio, struct vbi *vbi, char *geom, struct vtwin *parent, int pgno, int subno); #endif alevt-v1.8.0/vbi.c000066400000000000000000001004511345074102600137500ustar00rootroot00000000000000#define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include "os.h" #include "vt.h" #include "misc.h" #include "vbi.h" #include "fdset.h" #include "hamm.h" #include "lang.h" #ifdef USE_LIBZVBI # include static vbi_capture * pZvbiCapt; static vbi_raw_decoder * pZvbiRawDec; static vbi_sliced * pZvbiData; static vbi_proxy_client * pProxy; # define ZVBI_BUFFER_COUNT 10 # define ZVBI_TRACE 0 #endif static int vbi_dvb_open(struct vbi *vbi, const char *vbi_name, const char *progname, int txtpid); static void dvb_handler(struct vbi *vbi, int fd); #define FAC (1<<16) // factor for fix-point arithmetic static u8 *rawbuf; // one common buffer for raw vbi data. static int rawbuf_size; // its current size static char *vbi_names[] = { "/dev/vbi", "/dev/vbi0", "/dev/video0", "/dev/dvb/adapter0/demux0", NULL }; // default device names if none was given at the command line #ifndef USE_LIBZVBI /***** bttv api *****/ #define BASE_VIDIOCPRIVATE 192 #define BTTV_VBISIZE _IOR('v' , BASE_VIDIOCPRIVATE+8, int) /***** v4l2 vbi-api *****/ #define V4L2_PIX_FMT_GREY 0x59455247 #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format) /* #include "/usr/src/linux/include/linux/videodev2.h" */ enum v4l2_buf_type { V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, V4L2_BUF_TYPE_VBI_CAPTURE = 4, V4L2_BUF_TYPE_VBI_OUTPUT = 5, V4L2_BUF_TYPE_PRIVATE = 0x80, }; struct v4l2_vbi_format { u32 sampling_rate; /* in 1 Hz */ u32 offset; /* sampling starts # samples after rising hs */ u32 samples_per_line; u32 sample_format; /* V4L2_VBI_SF_* */ s32 start[2]; u32 count[2]; u32 flags; /* V4L2_VBI_* */ u32 reserved2; /* must be zero */ }; struct v4l2_format { enum v4l2_buf_type type; /* V4L2_BUF_TYPE_* */ union { void *alignment_dummy; struct v4l2_vbi_format vbi; /* VBI data */ u8 raw_data[200]; /* user-defined */ } fmt; }; /***** end of api definitions *****/ #endif // USE_LIBZVBI static void out_of_sync(struct vbi *vbi) { int i; // discard all in progress pages for (i = 0; i < 8; ++i) vbi->rpage[i].page->flags &= ~PG_ACTIVE; } // send an event to all clients static void vbi_send(struct vbi *vbi, int type, int i1, int i2, int i3, void *p1) { struct vt_event ev[1]; struct vbi_client *cl, *cln; ev->resource = vbi; ev->type = type; ev->i1 = i1; ev->i2 = i2; ev->i3 = i3; ev->p1 = p1; for (cl = PTR vbi->clients->first; cln = PTR cl->node->next; cl = cln) cl->handler(cl->data, ev); } static void vbi_send_page(struct vbi *vbi, struct raw_page *rvtp, int page) { struct vt_page *cvtp = 0; if (rvtp->page->flags & PG_ACTIVE) { if (rvtp->page->pgno % 256 != page) { rvtp->page->flags &= ~PG_ACTIVE; enhance(rvtp->enh, rvtp->page); if (vbi->cache) cvtp = vbi->cache->op->put(vbi->cache, rvtp->page); vbi_send(vbi, EV_PAGE, 0, 0, 0, cvtp ?: rvtp->page); } } } #ifndef USE_LIBZVBI // fine tune pll // this routines tries to adjust the sampling point of the decoder. // it collects parity and hamming errors and moves the sampling point // a 10th of a bitlength left or right. #define PLL_SAMPLES 4 // number of err vals to collect #define PLL_ERROR 4 // if this err val is crossed, readjust //#define PLL_ADJUST 4 // max/min adjust (10th of bitlength) static void pll_add(struct vbi *vbi, int n, int err) { if (vbi->pll_fixed) return; if (err > PLL_ERROR*2/3) // limit burst errors err = PLL_ERROR*2/3; vbi->pll_err += err; vbi->pll_cnt += n; if (vbi->pll_cnt < PLL_SAMPLES) return; if (vbi->pll_err > PLL_ERROR) { if (vbi->pll_err > vbi->pll_lerr) vbi->pll_dir = -vbi->pll_dir; vbi->pll_lerr = vbi->pll_err; vbi->pll_adj += vbi->pll_dir; if (vbi->pll_adj < -PLL_ADJUST || vbi->pll_adj > PLL_ADJUST) { vbi->pll_adj = 0; vbi->pll_dir = -1; vbi->pll_lerr = 0; } if (debug) printf("pll_adj = %2d\n", vbi->pll_adj); } vbi->pll_cnt = 0; vbi->pll_err = 0; } void vbi_pll_reset(struct vbi *vbi, int fine_tune) { vbi->pll_fixed = fine_tune >= -PLL_ADJUST && fine_tune <= PLL_ADJUST; vbi->pll_err = 0; vbi->pll_lerr = 0; vbi->pll_cnt = 0; vbi->pll_dir = -1; vbi->pll_adj = 0; if (vbi->pll_fixed) vbi->pll_adj = fine_tune; if (debug) if (vbi->pll_fixed) printf("pll_reset (fixed@%d)\n", vbi->pll_adj); else printf("pll_reset (auto)\n"); } #else // USE_LIBZVBI void vbi_pll_reset(struct vbi *vbi, int fine_tune) { } static void pll_add(struct vbi *vbi, int n, int err) { } #endif // USE_LIBZVBI // process one videotext packet static int vt_line(struct vbi *vbi, u8 *p) { struct vt_page *cvtp; struct raw_page *rvtp; int hdr, mag, mag8, pkt, i; int err = 0; hdr = hamm16(p, &err); if (err & 0xf000) return -4; mag = hdr & 7; mag8 = mag?: 8; pkt = (hdr >> 3) & 0x1f; p += 2; rvtp = vbi->rpage + mag; cvtp = rvtp->page; switch (pkt) { case 0: { int b1, b2, b3, b4; b1 = hamm16(p, &err); // page number b2 = hamm16(p+2, &err); // subpage number + flags b3 = hamm16(p+4, &err); // subpage number + flags b4 = hamm16(p+6, &err); // language code + more flags if (vbi->ppage->page->flags & PG_MAGSERIAL) vbi_send_page(vbi, vbi->ppage, b1); vbi_send_page(vbi, rvtp, b1); if (err & 0xf000) return 4; cvtp->errors = (err >> 8) + chk_parity(p + 8, 32);; cvtp->pgno = mag8 * 256 + b1; cvtp->subno = (b2 + b3 * 256) & 0x3f7f; cvtp->lang = "\0\4\2\6\1\5\3\7"[b4 >> 5] + (latin1==LATIN1 ? 0 : 8); cvtp->flags = b4 & 0x1f; cvtp->flags |= b3 & 0xc0; cvtp->flags |= (b2 & 0x80) >> 2; cvtp->lines = 1; cvtp->flof = 0; vbi->ppage = rvtp; pll_add(vbi, 1, cvtp->errors); conv2latin(p + 8, 32, cvtp->lang); vbi_send(vbi, EV_HEADER, cvtp->pgno, cvtp->subno, cvtp->flags, p); if (b1 == 0xff) return 0; cvtp->flags |= PG_ACTIVE; init_enhance(rvtp->enh); memcpy(cvtp->data[0]+0, p, 40); memset(cvtp->data[0]+40, ' ', sizeof(cvtp->data)-40); return 0; } case 1 ... 24: { pll_add(vbi, 1, err = chk_parity(p, 40)); if (~cvtp->flags & PG_ACTIVE) return 0; cvtp->errors += err; cvtp->lines |= 1 << pkt; conv2latin(p, 40, cvtp->lang); memcpy(cvtp->data[pkt], p, 40); return 0; } case 26: { int d, t[13]; if (~cvtp->flags & PG_ACTIVE) return 0; d = hamm8(p, &err); if (err & 0xf000) return 4; for (i = 0; i < 13; ++i) t[i] = hamm24(p + 1 + 3*i, &err); if (err & 0xf000) return 4; //printf("enhance on %x/%x\n", cvtp->pgno, cvtp->subno); add_enhance(rvtp->enh, d, t); return 0; } case 27: { // FLOF data (FastText) int b1,b2,b3,x; if (~cvtp->flags & PG_ACTIVE) return 0; // -1 flushes all pages. we may never resync again :( b1 = hamm8(p, &err); b2 = hamm8(p + 37, &err); if (err & 0xf000) return 4; if (b1 != 0 || not(b2 & 8)) return 0; for (i = 0; i < 6; ++i) { err = 0; b1 = hamm16(p+1+6*i, &err); b2 = hamm16(p+3+6*i, &err); b3 = hamm16(p+5+6*i, &err); if (err & 0xf000) return 1; x = (b2 >> 7) | ((b3 >> 5) & 0x06); cvtp->link[i].pgno = ((mag ^ x) ?: 8) * 256 + b1; cvtp->link[i].subno = (b2 + b3 * 256) & 0x3f7f; } cvtp->flof = 1; return 0; } case 30: { if (mag8 != 8) return 0; p[0] = hamm8(p, &err); // designation code p[1] = hamm16(p+1, &err); // initial page p[3] = hamm16(p+3, &err); // initial subpage + mag p[5] = hamm16(p+5, &err); // initial subpage + mag if (err & 0xf000) return 4; err += chk_parity(p+20, 20); conv2latin(p+20, 20, 0); vbi_send(vbi, EV_XPACKET, mag8, pkt, err, p); return 0; } default: // unused at the moment... //vbi_send(vbi, EV_XPACKET, mag8, pkt, err, p); //printf ("pkt=%d ",pkt); return 0; } return 0; } #ifndef USE_LIBZVBI // process one raw vbi line static int vbi_line(struct vbi *vbi, u8 *p) { u8 data[43], min, max; int dt[256], hi[6], lo[6]; int i, n, sync, thr; int bpb = vbi->bpb; /* remove DC. edge-detector */ for (i = vbi->soc; i < vbi->eoc; ++i) dt[i] = p[i+bpb/FAC] - p[i]; // amplifies the edges best. /* set barrier */ for (i = vbi->eoc; i < vbi->eoc+16; i += 2) dt[i] = 100, dt[i+1] = -100; /* find 6 rising and falling edges */ for (i = vbi->soc, n = 0; n < 6; ++n) { while (dt[i] < 32) i++; hi[n] = i; while (dt[i] > -32) i++; lo[n] = i; } if (i >= vbi->eoc) return -1; // not enough periods found i = hi[5] - hi[1]; // length of 4 periods (8 bits) if (i < vbi->bp8bl || i > vbi->bp8bh) return -1; // bad frequency /* AGC and sync-reference */ min = 255, max = 0, sync = 0; for (i = hi[4]; i < hi[5]; ++i) if (p[i] > max) max = p[i], sync = i; for (i = lo[4]; i < lo[5]; ++i) if (p[i] < min) min = p[i]; thr = (min + max) / 2; p += sync; /* search start-byte 11100100 */ for (i = 4*bpb + vbi->pll_adj*bpb/10; i < 16*bpb; i += bpb) if (p[i/FAC] > thr && p[(i+bpb)/FAC] > thr) // two ones is enough... { /* got it... */ memset(data, 0, sizeof(data)); for (n = 0; n < 43*8; ++n, i += bpb) if (p[i/FAC] > thr) data[n/8] |= 1 << (n%8); if (data[0] != 0x27) // really 11100100? (rev order!) return -1; if (i = vt_line(vbi, data+1)) if (i < 0) pll_add(vbi, 2, -i); else pll_add(vbi, 1, i); return 0; } return -1; } #endif // USE_LIBZVBI // called when new vbi data is waiting static void vbi_handler(struct vbi *vbi, int fd) { #ifndef USE_LIBZVBI int n, i; u32 seq; n = read(vbi->fd, rawbuf, vbi->bufsize); if (dl_empty(vbi->clients)) return; if (n != vbi->bufsize) return; seq = *(u32 *)&rawbuf[n - 4]; if (vbi->seq+1 != seq) { out_of_sync(vbi); if (seq < 3 && vbi->seq >= 3) vbi_reset(vbi); } vbi->seq = seq; if (seq > 1) // the first may contain data from prev channel { for (i = 0; i+vbi->bpl <= n; i += vbi->bpl) vbi_line(vbi, rawbuf + i); } #else // USE_LIBZVBI double timestamp; struct timeval timeout; int lineCount; int line; int res; timeout.tv_sec = 0; timeout.tv_usec = 25000; res = vbi_capture_read_sliced(pZvbiCapt, pZvbiData, &lineCount, ×tamp, &timeout); if (res > 0) { for (line=0; line < lineCount; line++) { // dump all TTX packets, even non-EPG ones if ((pZvbiData[line].id & VBI_SLICED_TELETEXT_B) != 0) { vt_line(vbi, pZvbiData[line].data); } } } else if (res < 0) { // I/O error } #endif // USE_LIBZVBI } int vbi_add_handler(struct vbi *vbi, void *handler, void *data) { struct vbi_client *cl; if (not(cl = malloc(sizeof(*cl)))) return -1; cl->handler = handler; cl->data = data; dl_insert_last(vbi->clients, cl->node); return 0; } void vbi_del_handler(struct vbi *vbi, void *handler, void *data) { struct vbi_client *cl; for (cl = PTR vbi->clients->first; cl->node->next; cl = PTR cl->node->next) if (cl->handler == handler && cl->data == data) { dl_remove(cl->node); break; } return; } #ifndef USE_LIBZVBI static int set_decode_parms(struct vbi *vbi, struct v4l2_vbi_format *p) { double fs; // sampling rate double bpb; // bytes per bit int soc, eoc; // start/end of clock run-in int bpl; // bytes per line if (p->sample_format != V4L2_PIX_FMT_GREY) { error("v4l2: unsupported vbi data format 0x%08lx", p->sample_format); return -1; } // some constants from the standard: // horizontal frequency fh = 15625Hz // teletext bitrate ft = 444*fh = 6937500Hz // teletext identification sequence 10101010 10101010 11100100 // 13th bit of seq rel to falling hsync 12us -1us +0.4us // I search for the clock run-in (10101010 10101010) from 12us-1us-12.5/ft // (earliest first bit) to 12us+0.4us+3.5/ft (latest last bit) // earlist first bit tf = 12us-1us-12.5/ft = 9.2us // latest last bit tl = 12us+0.4us+3.5/ft = 12.9us // total number of used bits n = (2+1+2+40)*8 = 360 bpl = p->samples_per_line; fs = p->sampling_rate; bpb = fs/6937500.0; soc = (int)(9.2e-6*fs) - (int)p->offset; eoc = (int)(12.9e-6*fs) - (int)p->offset; if (soc < 0) soc = 0; if (eoc > bpl - (int)(43*8*bpb)) eoc = bpl - (int)(43*8*bpb); if (eoc - soc < (int)(16*bpb)) { // line too short or offset too large or wrong sample_rate error("v4l2: broken vbi format specification"); return -1; } if (eoc > 240) { // the vbi_line routine can hold max 240 values in its work buffer error("v4l2: unable to handle these sampling parameters"); return -1; } vbi->bpb = bpb * FAC + 0.5; vbi->soc = soc; vbi->eoc = eoc; vbi->bp8bl = 0.97 * 8*bpb; // -3% tolerance vbi->bp8bh = 1.03 * 8*bpb; // +3% tolerance vbi->bpl = bpl; vbi->bufsize = bpl * (p->count[0] + p->count[1]); return 0; } static int setup_dev(struct vbi *vbi) { struct v4l2_format v4l2_format[1]; struct v4l2_vbi_format *vbifmt = &v4l2_format->fmt.vbi; memset(&v4l2_format, 0, sizeof(v4l2_format)); v4l2_format->type = V4L2_BUF_TYPE_VBI_CAPTURE; if (ioctl(vbi->fd, VIDIOC_G_FMT, v4l2_format) == -1 || v4l2_format->type != V4L2_BUF_TYPE_VBI_CAPTURE) { // not a v4l2 device. assume bttv and create a standard fmt-struct. int size; vbifmt->sample_format = V4L2_PIX_FMT_GREY; vbifmt->sampling_rate = 35468950; vbifmt->samples_per_line = 2048; vbifmt->offset = 244; if ((size = ioctl(vbi->fd, BTTV_VBISIZE, 0)) == -1) { // BSD or older bttv driver. vbifmt->count[0] = 16; vbifmt->count[1] = 16; } else if (size % 2048) { error("broken bttv driver (bad buffer size)"); return -1; } else { size /= 2048; vbifmt->count[0] = size/2; vbifmt->count[1] = size - size/2; } } if (set_decode_parms(vbi, vbifmt) == -1) return -1; if (vbi->bpl < 1 || vbi->bufsize < vbi->bpl || vbi->bufsize % vbi->bpl != 0) { error("strange size of vbi buffer (%d/%d)", vbi->bufsize, vbi->bpl); return -1; } // grow buffer if necessary if (rawbuf_size < vbi->bufsize) { if (rawbuf) free(rawbuf); if (not(rawbuf = malloc(rawbuf_size = vbi->bufsize))) out_of_mem(rawbuf_size); // old buffer already freed. abort. } return 0; } #endif // USE_LIBZVBI struct vbi * vbi_open(char *vbi_name, struct cache *ca, int fine_tune, int big_buf, const char *progname, int txtpid) { static int inited = 0; struct vbi *vbi; #ifdef USE_LIBZVBI char * pErrStr; int services; #endif if (vbi_name == NULL) { int i; char *tried_devices = NULL; char *old_tried_devices = NULL; for (i = 0; vbi_names[i] != NULL; i++) { vbi_name = vbi_names[i]; // collect device names for the error message below if (old_tried_devices) { if (asprintf(&tried_devices, "%s, %s", old_tried_devices, vbi_name) < 0) tried_devices = NULL; free(old_tried_devices); } else if (asprintf(&tried_devices, "%s", vbi_name) < 0) tried_devices = NULL; if (tried_devices == NULL) out_of_mem(-1); old_tried_devices = tried_devices; if (access(vbi_name, R_OK) != 0) continue; vbi = vbi_open(vbi_name, ca, fine_tune, big_buf, progname, txtpid); if (vbi != NULL) { if (tried_devices != NULL) free(tried_devices); return vbi; } } error("could not open any of the standard devices (%s)", tried_devices); free(tried_devices); return NULL; } if (not inited) lang_init(); inited = 1; if (not(vbi = malloc(sizeof(*vbi)))) { error("out of memory"); goto fail1; } #ifndef USE_LIBZVBI if (!vbi_dvb_open(vbi, vbi_name, progname, txtpid)) { vbi->cache = ca; dl_init(vbi->clients); vbi->seq = 0; out_of_sync(vbi); vbi->ppage = vbi->rpage; //vbi_pll_reset(vbi, fine_tune); fdset_add_fd(fds, vbi->fd, dvb_handler, vbi); return vbi; } if ((vbi->fd = open(vbi_name, O_RDONLY)) == -1) { ioerror(vbi_name); goto fail2; } if (big_buf != -1) error("-oldbttv/-newbttv is obsolete. option ignored."); if (setup_dev(vbi) == -1) goto fail3; vbi_pll_reset(vbi, fine_tune); vbi->seq = 0; #else // USE_LIBZVBI services = VBI_SLICED_TELETEXT_B; pErrStr = NULL; vbi->fd = -1; pProxy = vbi_proxy_client_create(vbi_name, "alevt", VBI_PROXY_CLIENT_NO_STATUS_IND, &pErrStr, ZVBI_TRACE); if (pProxy != NULL) { pZvbiCapt = vbi_capture_proxy_new(pProxy, ZVBI_BUFFER_COUNT, 0, &services, 0, &pErrStr); if (pZvbiCapt == NULL) { vbi_proxy_client_destroy(pProxy); pProxy = NULL; } } if (pZvbiCapt == NULL) pZvbiCapt = vbi_capture_v4l2_new(vbi_name, ZVBI_BUFFER_COUNT, &services, 0, &pErrStr, ZVBI_TRACE); if (pZvbiCapt == NULL) pZvbiCapt = vbi_capture_v4l_new(vbi_name, 0, &services, 0, &pErrStr, ZVBI_TRACE); if (pZvbiCapt != NULL) { pZvbiRawDec = vbi_capture_parameters(pZvbiCapt); if ((pZvbiRawDec != NULL) && ((services & VBI_SLICED_TELETEXT_B) != 0)) { pZvbiData = malloc((pZvbiRawDec->count[0] + pZvbiRawDec->count[1]) * sizeof(*pZvbiData)); vbi->fd = vbi_capture_fd(pZvbiCapt);; } else vbi_capture_delete(pZvbiCapt); } if (pErrStr != NULL) { fprintf(stderr, "libzvbi: %s\n", pErrStr); free(pErrStr); } if (vbi->fd == -1) goto fail2; #endif vbi->cache = ca; dl_init(vbi->clients); out_of_sync(vbi); vbi->ppage = vbi->rpage; fdset_add_fd(fds, vbi->fd, vbi_handler, vbi); return vbi; fail3: close(vbi->fd); fail2: free(vbi); fail1: return 0; } void vbi_close(struct vbi *vbi) { fdset_del_fd(fds, vbi->fd); if (vbi->cache) vbi->cache->op->close(vbi->cache); #ifndef USE_LIBZVBI close(vbi->fd); #else // USE_LIBZVBI if (pZvbiData != NULL) free(pZvbiData); pZvbiData = NULL; if (pZvbiCapt != NULL) { vbi_capture_delete(pZvbiCapt); pZvbiCapt = NULL; } if (pProxy != NULL) { vbi_proxy_client_destroy(pProxy); pProxy = NULL; } #endif free(vbi); } struct vt_page * vbi_query_page(struct vbi *vbi, int pgno, int subno) { struct vt_page *vtp = 0; if (vbi->cache) vtp = vbi->cache->op->get(vbi->cache, pgno, subno); if (vtp == 0) { // EV_PAGE will come later... return 0; } vbi_send(vbi, EV_PAGE, 1, 0, 0, vtp); return vtp; } void vbi_reset(struct vbi *vbi) { if (vbi->cache) vbi->cache->op->reset(vbi->cache); vbi_send(vbi, EV_RESET, 0, 0, 0, 0); #ifdef USE_LIBZVBI if (pZvbiRawDec != NULL) vbi_raw_decoder_reset(pZvbiRawDec); #endif } /* * Starting from here: DVB */ /* DVB API */ #include "dvb/dmx.h" #include "dvb/frontend.h" /*#include "dvb/sec.h"*/ #include "dvb/video.h" static int dvb_get_table(int fd, u_int16_t pid, u_int8_t tblid, u_int8_t *buf, size_t bufsz) { struct dmx_sct_filter_params sctFilterParams; struct pollfd pfd; int r; memset(&sctFilterParams, 0, sizeof(sctFilterParams)); sctFilterParams.pid = pid; sctFilterParams.timeout = 10000; sctFilterParams.flags = DMX_ONESHOT | DMX_IMMEDIATE_START | DMX_CHECK_CRC; sctFilterParams.filter.filter[0] = tblid; sctFilterParams.filter.mask[0] = 0xff; if (ioctl(fd, DMX_SET_FILTER, &sctFilterParams)) { perror("DMX_SET_FILTER"); return -1; } pfd.fd = fd; pfd.events = POLLIN; r = poll(&pfd, 1, 10000); if (r < 0) { perror("poll"); goto out; } if (r > 0) { r = read(fd, buf, bufsz); if (r < 0) { perror("read"); goto out; } } out: ioctl(fd, DMX_STOP, 0); return r; } static const u_int8_t byterev8[256] = { 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff }; static void dvb_handle_pes_payload(struct vbi *vbi, const u_int8_t *buf, unsigned int len) { unsigned int p, i; u_int8_t data[42]; if (buf[0] < 0x10 || buf[0] > 0x1f) return; /* no EBU teletext data */ for (p = 1; p < len; p += /*6 + 40*/ 2 + buf[p + 1]) { #if 0 printf("Txt Line:\n" " data_unit_id 0x%02x\n" " data_unit_length 0x%02x\n" " reserved_for_future_use 0x%01x\n" " field_parity 0x%01x\n" " line_offset 0x%02x\n" " framing_code 0x%02x\n" " magazine_and_packet_addr 0x%04x\n" " data_block 0x%02x 0x%02x 0x%02x 0x%02x\n", buf[p], buf[p+1], buf[p+2] >> 6, (buf[p+2] >> 5) & 1, buf[p+2] & 0x1f, buf[p+3], (buf[p+4] << 8) | buf[p+5], buf[p+6], buf[p+7], buf[p+8], buf[p+9]); #endif for (i = 0; i < sizeof(data); i++) data[i] = byterev8[buf[p+4+i]]; /* * note: we should probably check for missing lines and then * call out_of_sync(vbi); and/or vbi_reset(vbi); */ vt_line(vbi, data); } } static unsigned int rawptr; static void dvb_handler(struct vbi *vbi, int fd) { /* PES packet start code prefix and stream_id == private_stream_1 */ static const u_int8_t peshdr[4] = { 0x00, 0x00, 0x01, 0xbd }; u_int8_t *bp; int n; unsigned int p, i, len; u_int16_t rpid; u_int32_t crc, crccomp; if (rawptr >= (unsigned int)rawbuf_size) rawptr = 0; n = read(vbi->fd, rawbuf + rawptr, rawbuf_size - rawptr); if (n <= 0) return; rawptr += n; if (rawptr < 6) return; if (memcmp(rawbuf, peshdr, sizeof(peshdr))) { bp = memmem(rawbuf, rawptr, peshdr, sizeof(peshdr)); if (!bp) return; rawptr -= (bp - rawbuf); memmove(rawbuf, bp, rawptr); if (rawptr < 6) return; } len = (rawbuf[4] << 8) | rawbuf[5]; if (len < 9) { rawptr = 0; return; } if (rawptr < len + 6) return; p = 9 + rawbuf[8]; #if 0 for (i = 0; i < len - p; i++) { if (!(i & 15)) printf("\n%04x:", i); printf(" %02x", rawbuf[p + i]); } printf("\n"); #endif if (!dl_empty(vbi->clients)) dvb_handle_pes_payload(vbi, rawbuf + p, len - p); rawptr -= len; if (rawptr) memmove(rawbuf, rawbuf + len, rawptr); } static int vbi_dvb_open(struct vbi *vbi, const char *vbi_name, const char *progname, int txtpid) { struct { u_int16_t pmtpid; u_int16_t txtpid; u_int16_t service_id; u_int8_t service_type; char service_provider_name[64]; char service_name[64]; u_int8_t txtlang[3]; u_int8_t txttype; u_int8_t txtmagazine; u_int8_t txtpage; } progtbl[128], *progp; u_int8_t tbl[4096]; int r; unsigned int i, j, k, l, progcnt = 0; struct dmx_pes_filter_params filterpar; /* open DVB demux device */ if (!vbi_name) vbi_name = "/dev/dvb/adapter0/demux0"; if ((vbi->fd = open(vbi_name, O_RDWR)) == -1) { error("cannot open demux device %s", vbi_name); return -1; } memset(progtbl, 0, sizeof(progtbl)); if (txtpid >= 0x15 && txtpid < 0x1fff) { vbi->txtpid = txtpid; printf("Using command line specified teletext PID 0x%x\n", vbi->txtpid); goto txtpidfound; } /* parse PAT to enumerate services and to find the PMT PIDs */ r = dvb_get_table(vbi->fd, 0, 0, tbl, sizeof(tbl)); if (r == -1) goto outerr; if (!(tbl[5] & 1)) { error("PAT not active (current_next_indicator == 0)"); goto outerr; } if (tbl[6] != 0 || tbl[7] != 0) { error("PAT has multiple sections"); goto outerr; } if (r < 13) { error("PAT too short\n"); goto outerr; } r -= 13; for (i = 0; i < (unsigned)r; i += 4) { if (progcnt >= sizeof(progtbl)/sizeof(progtbl[0])) { error("Program table overflow"); goto outerr; } progtbl[progcnt].service_id = (tbl[8 + i] << 8) | tbl[9 + i]; if (!progtbl[progcnt].service_id) /* this is the NIT pointer */ continue; progtbl[progcnt].pmtpid = ((tbl[10 + i] << 8) | tbl[11 + i]) & 0x1fff; progcnt++; } /* find the SDT to get the station names */ r = dvb_get_table(vbi->fd, 0x11, 0x42, tbl, sizeof(tbl)); if (r == -1) goto outerr; if (!(tbl[5] & 1)) { error("SDT not active (current_next_indicator == 0)"); goto outerr; } if (tbl[6] != 0 || tbl[7] != 0) { error("SDT has multiple sections"); goto outerr; } if (r < 12) { error("SDT too short\n"); goto outerr; } i = 11; while (i < (unsigned)r - 1) { k = (tbl[i] << 8) | tbl[i+1]; /* service ID */ progp = NULL; for (j = 0; j < progcnt; j++) if (progtbl[j].service_id == k) { progp = &progtbl[j]; break; } j = i + 5; i = j + (((tbl[i+3] << 8) | tbl[i+4]) & 0x0fff); if (!progp) { error("SDT: service_id 0x%x not in PAT\n", k); continue; } while (j < i) { switch (tbl[j]) { case 0x48: /* service descriptor */ k = j + 4 + tbl[j + 3]; progp->service_type = tbl[j+2]; snprintf(progp->service_provider_name, sizeof(progp->service_provider_name), "%.*s", tbl[j+3], tbl + j + 4); snprintf(progp->service_name, sizeof(progp->service_name), "%.*s", tbl[k], tbl + k + 1); break; } j += 2 + tbl[j + 1]; } } /* parse PMT's to find Teletext Services */ for (l = 0; l < progcnt; l++) { progtbl[l].txtpid = 0x1fff; switch (progtbl[l].service_type) { case 0x01: // digital television service case 0x03: // Teletext service case 0x11: // MPEG-2 HD digital television service case 0x16: // H.264/AVC SD digital television service case 0x19: // H.264/AVC HD digital television service case 0x1c: // H.264/AVC frame compatible plano-stereoscopic HD digital television service case 0x1f: // HEVC digital television service break; default: continue; /* service is not digital TV */ } if (progtbl[l].pmtpid < 0x15 || /* PMT PID sanity check */ progtbl[l].pmtpid >= 0x1fff) continue; r = dvb_get_table(vbi->fd, progtbl[l].pmtpid, 0x02, tbl, sizeof(tbl)); if (r == -1) goto outerr; if (!(tbl[5] & 1)) { error("PMT pid 0x%x not active (current_next_indicator == 0)", progtbl[l].pmtpid); goto outerr; } if (tbl[6] != 0 || tbl[7] != 0) { error("PMT pid 0x%x has multiple sections", progtbl[l].pmtpid); goto outerr; } if (r < 13) { error("PMT pid 0x%x too short\n", progtbl[l].pmtpid); goto outerr; } i = 12 + (((tbl[10] << 8) | tbl[11]) & 0x0fff); /* skip program info section */ while (i <= (unsigned)r-6) { j = i + 5; i = j + (((tbl[i + 3] << 8) | tbl[i + 4]) & 0x0fff); if (tbl[j - 5] != 0x06) /* teletext streams have type 0x06 */ continue; k = ((tbl[j - 4] << 8) | tbl[j - 3]) & 0x1fff; /* elementary PID - save until we know if it's the teletext PID */ while (j < i) { switch (tbl[j]) { case 0x56: /* EBU teletext descriptor */ progtbl[l].txtlang[0] = tbl[j + 2]; progtbl[l].txtlang[1] = tbl[j + 3]; progtbl[l].txtlang[2] = tbl[j + 4]; progtbl[l].txttype = tbl[j + 5] >> 3; progtbl[l].txtmagazine = tbl[j + 5] & 7; progtbl[l].txtpage = tbl[j + 6]; progtbl[l].txtpid = k; break; } j += 2 + tbl[j + 1]; } } } for (i = 0; i < progcnt; i++) { printf("Service ID 0x%04x Type 0x%02x Provider Name \"%s\" Name \"%s\"\n" " PMT PID 0x%04x TXT: PID 0x%04x lang %.3s type 0x%02x magazine %1u page %3u\n", progtbl[i].service_id, progtbl[i].service_type, progtbl[i].service_provider_name, progtbl[i].service_name, progtbl[i].pmtpid, progtbl[i].txtpid, progtbl[i].txtlang, progtbl[i].txttype, progtbl[i].txtmagazine, progtbl[i].txtpage); } progp = NULL; if (progname) { j = strlen(progname); for (i = 0; i < progcnt; i++) if (!strncmp(progtbl[i].service_name, progname, j) && progtbl[i].txtpid != 0x1fff) { progp = &progtbl[i]; break; } } if (progname && !progp) { j = strlen(progname); for (i = 0; i < progcnt; i++) if (!strncasecmp(progtbl[i].service_name, progname, j) && progtbl[i].txtpid != 0x1fff) { progp = &progtbl[i]; break; } } if (!progp) { for (i = 0; i < progcnt; i++) if (progtbl[i].txtpid != 0x1fff) { progp = &progtbl[i]; break; } } if (!progp) { error("No Teletext service found\n"); goto outerr; } printf("Using: Service ID 0x%04x Type 0x%02x Provider Name \"%s\" Name \"%s\"\n" " PMT PID 0x%04x TXT: PID 0x%04x lang %.3s type 0x%02x magazine %1u page %3u\n", progp->service_id, progp->service_type, progp->service_provider_name, progp->service_name, progp->pmtpid, progp->txtpid, progp->txtlang, progp->txttype, progp->txtmagazine, progp->txtpage); vbi->txtpid = progp->txtpid; txtpidfound: rawbuf = malloc(rawbuf_size = 8192); if (!rawbuf) goto outerr; rawptr = 0; #if 0 close(vbi->fd); if ((vbi->fd = open(vbi_name, O_RDWR)) == -1) { error("cannot open demux device %s", vbi_name); return -1; } #endif memset(&filterpar, 0, sizeof(filterpar)); filterpar.pid = vbi->txtpid; filterpar.input = DMX_IN_FRONTEND; filterpar.output = DMX_OUT_TAP; filterpar.pes_type = DMX_PES_OTHER; filterpar.flags = DMX_IMMEDIATE_START; if (ioctl(vbi->fd, DMX_SET_PES_FILTER, &filterpar) < 0) { error("ioctl: DMX_SET_PES_FILTER %s (%u)", strerror(errno), errno); goto outerr; } return 0; outerr: close(vbi->fd); vbi->fd = -1; return -1; } struct vbi *open_null_vbi(struct cache *ca) { static int inited = 0; struct vbi *vbi; if (not inited) lang_init(); inited = 1; vbi = malloc(sizeof(*vbi)); if (!vbi) { error("out of memory"); goto fail1; } vbi->fd = open("/dev/null", O_RDONLY); if (vbi->fd == -1) { error("cannot open null device"); goto fail2; } vbi->txtpid = -1; vbi->bpb = 0; vbi->soc = 0; vbi->eoc = 0; vbi->bp8bl = 0; vbi->bp8bh = 0; vbi->bpl = 1; vbi->bufsize = 8; rawbuf_size = vbi->bufsize; rawbuf = malloc(rawbuf_size); if (!rawbuf) goto fail3; rawptr = 0; vbi->cache = ca; dl_init(vbi->clients); vbi->seq = 0; out_of_sync(vbi); vbi->ppage = vbi->rpage; // fdset_add_fd(fds, vbi->fd, vbi_handler, vbi); return vbi; fail3: close(vbi->fd); fail2: free(vbi); fail1: return 0; } void send_errmsg(struct vbi *vbi, char *errmsg, ...) { va_list args; if (errmsg == NULL || *errmsg == '\0') return; va_start(args, errmsg); char *buff = NULL; if (vasprintf(&buff, errmsg, args) < 0) buff = NULL; va_end(args); if(buff == NULL) out_of_mem(-1); vbi_send(vbi, EV_ERR, 0, 0, 0, buff); } alevt-v1.8.0/vbi.h000066400000000000000000000030731345074102600137570ustar00rootroot00000000000000#ifndef VBI_H #define VBI_H #include "vt.h" #include "dllist.h" #include "cache.h" #include "lang.h" #define PLL_ADJUST 4 struct raw_page { struct vt_page page[1]; struct enhance enh[1]; }; struct vbi { int fd; struct cache *cache; struct dl_head clients[1]; // raw buffer management int bufsize; // nr of bytes sent by this device int bpl; // bytes per line u32 seq; // page assembly struct raw_page rpage[8]; // one for each magazin struct raw_page *ppage; // points to page of previous pkt0 // phase correction int pll_fixed; // 0 = auto, 1..2*PLL_ADJUST+1 = fixed int pll_adj; int pll_dir; int pll_cnt; int pll_err, pll_lerr; // v4l2 decoder data int bpb; // bytes per bit * 2^16 int bp8bl, bp8bh; // bytes per 8-bit low/high int soc, eoc; // start/end of clock run-in // DVB stuff unsigned int txtpid; }; struct vbi_client { struct dl_node node[1]; void (*handler)(void *data, struct vt_event *ev); void *data; }; struct vbi *vbi_open(char *vbi_dev_name, struct cache *ca, int fine_tune, int big_buf, const char *progname, int txtpid); void vbi_close(struct vbi *vbi); void vbi_reset(struct vbi *vbi); int vbi_add_handler(struct vbi *vbi, void *handler, void *data); void vbi_del_handler(struct vbi *vbi, void *handler, void *data); struct vt_page *vbi_query_page(struct vbi *vbi, int pgno, int subno); void vbi_pll_reset(struct vbi *vbi, int fine_tune); struct vbi *open_null_vbi(struct cache *ca); void send_errmsg(struct vbi *vbi, char *errmsg, ...); #endif alevt-v1.8.0/vt.h000066400000000000000000000037071345074102600136340ustar00rootroot00000000000000#ifndef VT_H #define VT_H #include "misc.h" #define W 40 #define H 25 #define BAD_CHAR 0xb8 // substitute for chars with bad parity extern int debug; struct vt_event { int type; void *resource; /* struct xio_win *, struct vbi *, ... */ int i1, i2, i3, i4; void *p1; }; #define EV_CLOSE 1 #define EV_KEY 2 // i1:KEY_xxx i2:shift-flag #define EV_MOUSE 3 // i1:button i2:shift-flag i3:x i4:y #define EV_SELECTION 4 // i1:len p1:data #define EV_PAGE 5 // p1:vt_page i1:query-flag #define EV_HEADER 6 // i1:pgno i2:subno i3:flags p1:data #define EV_XPACKET 7 // i1:mag i2:pkt i3:errors p1:data #define EV_RESET 8 // ./. #define EV_TIMER 9 // ./. #define EV_ERR 10 // p1: errmsg #define KEY_F(i) (1000+i) #define KEY_LEFT 2001 #define KEY_RIGHT 2002 #define KEY_UP 2003 #define KEY_DOWN 2004 #define KEY_PUP 2005 #define KEY_PDOWN 2006 #define KEY_DEL 2007 #define KEY_INS 2008 struct vt_page { int pgno, subno; // the wanted page number int lang; // language code int flags; // misc flags (see PG_xxx below) int errors; // number of single bit errors in page u32 lines; // 1 bit for each line received u8 data[25][40]; // page contents int flof; // page has FastText links struct { int pgno; int subno; } link[6]; // FastText links (FLOF) }; #define PG_SUPPHEADER 0x01 // C7 row 0 is not to be displayed #define PG_UPDATE 0x02 // C8 row 1-28 has modified (editors flag) #define PG_OUTOFSEQ 0x04 // C9 page out of numerical order #define PG_NODISPLAY 0x08 // C10 rows 1-24 is not to be displayed #define PG_MAGSERIAL 0x10 // C11 serial trans. (any pkt0 terminates page) #define PG_ERASE 0x20 // C4 clear previously stored lines #define PG_NEWSFLASH 0x40 // C5 box it and insert into normal video pict. #define PG_SUBTITLE 0x80 // C6 box it and insert into normal video pict. // my flags #define PG_ACTIVE 0x100 // currently fetching this page #define ANY_SUB 0x3f7f // universal subpage number #endif alevt-v1.8.0/vt900.out000066400000000000000000000024721345074102600144430ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.4.6 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \5\30Visit http://goron.de/~froese ", "\6\15Contents: ", "\6\15Contents: ", "\24 #################################### ", " ", " \3\177\6Starting AleVT . . . . . . 901\13 ", " ", " \3\177\6Using AleVT . . . . . . . 910 ", " ", //" \3\177\6Warning . . . . . . . . . 902\10« ", //" ", " \3\177\6Copying/Warranty . . . . . 903 ", " ", " \3\177\6QuickClick Page . . . . . 999 ", " ", " ", " ", "\24 pppppppppppppppppppppppppppppppppppp ", " (Click to select a page) ", " ", "\4\35\7© 2002 E. Toernig froese@gmx.de \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt901-01.out000066400000000000000000000023261345074102600146600ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7 Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.5.1 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0031/4 ", "\6\15Starting AleVT: ", "\6\15Starting AleVT: ", "\24 #################################### ", "\6 $\7alevt\6[options] ", "\6 Default: ", " --help ", " --version ", " -vbi\6 \2/dev/vbi ", " \2/dev/vbi0 ", " \2/dev/video0 ", " \2/dev/dvb/adapter0/demux0 ", " -display\6 \2$DISPLAY ", " -geometry\6 \00241x25 ", " ", "\24 pppppppppppppppppppppppppppppppppppp ", " (Click on\0031/4\7for next page) ", " ", "\4\35\7Back 900 Index 900 Next 903\13 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt901-02.out000066400000000000000000000023251345074102600146600ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.2.3 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0032/4 ", "\6\15Starting AleVT: ", "\6\15Starting AleVT: ", "\24 #################################### ", " -finetune\6<-4..4 | auto> \2 1 ", " -child\6 ", " [-parent]\6 \002900 ", " -[no]erc \2enabled ", " -[no]bell \2enabled ", " -charset\6 \2latin-1 ", " -progname\6 ", " -pid\6 ", " ", " ", "\24 pppppppppppppppppppppppppppppppppppp ", " (Click on\0032/4\7for next page) ", " ", "\4\35\7Back 900 Index 900 Next 903\13 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt901-03.out000066400000000000000000000023221345074102600146560ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.2.3 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0033/4 ", "\6\15Starting AleVT: ", "\6\15Starting AleVT: ", "\24 #################################### ", "\6 Order is important! Each page number ", "\6 opens a window with the previously ", "\6 given geometry, device and display. ", " ", " ppp[.ss]\6stand for a page number and ", "\6 an optional subpage number. If the ", "\6 subpage number is omitted the first ", "\6 transmitted subpage is shown. ", " ", "\6 The\7-child\6option requires a parent ", "\6 window. So it must be preceded by ", "\24 pppppppppppppppppppppppppppppppppppp ", " (Click on\0033/4\7for next page) ", " ", "\4\35\7Back 900 Index 900 Next 903\13 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt901-04.out000066400000000000000000000023141345074102600146600ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.2.3 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0034/4 ", "\6\15Starting AleVT: ", "\6\15Starting AleVT: ", "\24 #################################### ", "\6 a parent or another child window. ", " ", "\6 To use the DVB interface, use: ", " -vbi /dev/dvb/adapter0/demux0 ", " ", "\6 The\7-progname\6or\7-pid\6option specify ", "\6 the program or teletext PID if using ", "\6 the DVB interface. ", " ", " ", " ", " ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", "\4\35\7Back 900 Index 900 Next 903\13 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt902.out000066400000000000000000000023111345074102600144350ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.4.6 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " ", "\6\15Warning: ", "\6\15Warning: ", "\24 #################################### ", "\6 The bttv-driver (v0.5.22) is buggy. ", "\6 Don't try to run AleVT together with ", "\6 anything that grabs video data from ", "\6 /dev/video. The grabber will stop ", "\6 running and some time later the ", "\6 kernel will crash due to an out of ", "\6 memory condition. ", "\6 ", "\6 It seems to work with programs that ", "\6 just use video overlay. Xawtv in ", "\6 overlay mode works just fine. ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", " ", "\4\35\7Back 901 Index 900 Next 903 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt903.out000066400000000000000000000023131345074102600144400ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.3.2 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " ", "\6\15Copying/Warranty: ", "\6\15Copying/Warranty: ", "\24 #################################### ", "\6 © 2002 Edgar Toernig (froese@gmx.de) ", "\6 All Rights Reserved. ", "\6 ", "\6 This program is free software; you ", "\6 can redistribute it and/or modify it ", "\6 under the terms of the GNU General ", "\6 Public License Version 2 as published ", "\6 by the Free Software Foundation. ", "\6 ", "\6 This program is distributed in the ", "\6 hope that it will be useful, but ", "\6\7without any warranty.\6See the GNU ", "\6 General Public License for details. ", " ", "\4\35\7Back 901 Index 900 Next 910 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt910.out000066400000000000000000000023521345074102600144410ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.3.2 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " ", "\6\15Using AleVT: ", "\6\15Using AleVT: ", "\24 #################################### ", " ", "\6 \3\177\6The Status Line . . . . . 911\13 ", "\6 ", "\6 \3\177\6Selecting Pages . . . . . 912\13 ", "\6 ", "\6 \3\177\6FastText Menu . . . . . . 913 ", "\6 ", "\6 \3\177\6Keyboard Commands . . . . 914\13 ", "\6 ", "\6 \3\177\6Cut & Paste . . . . . . . 915 ", " ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", " ", "\4\35\7Back 903\13 Index 900 Next 911\13 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt911-01.out000066400000000000000000000023241345074102600146570ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.2.1 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0031/2 ", "\6\15Status Line: ", "\6\15Status Line: ", "\24 #################################### ", "\6 The top line of each window is the ", "\6 status line. On the left it shows ", "\6 the current page number (CPN) and ", "\6 some flags. The rest of the line ", "\6 is the running header sent by the ", "\6 TV station. ", "\6 ", "\6 If the CPN is red, the program is ", "\6 searching for that page. If it's ", "\6 green, it's the PN of the currently ", "\6 displayed page. ", "\24 pppppppppppppppppppppppppppppppppppp ", " (Click on\0031/2\7for next page) ", " ", "\4\35\7Back 910\13 Index 900 Next 912\13 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt911-02.out000066400000000000000000000023421345074102600146600ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.2.5 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0032/2 ", "\6\15Status Line: \14\5\30Test ", "\6\15Status Line: \14\5\30Test ", "\24 #################################### ", "\6 An\2H\6behind the CPN indicates that ", "\6 the page is on hold. This inhibits ", "\6 subpage cycling and page updates. A ", "\6 click on the CPN toggles the\2H\6flag. ", " ", "\6 A\5*\6indicates that the page con- ", "\6 tains concealed text. Clicking on ", "\6 the\5*\6reveals that text. ", " ", "\6 A CPN in the form\2Sxx\6is shown if a ", "\6 specific subpage is selected. ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", " ", "\4\35\7Back 910\13 Index 900 Next 912\13 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt911-03.out000066400000000000000000000023251345074102600146620ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.1.2 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0033/3 ", "\6\15Status Line: ", "\6\15Status Line: ", "\24 #################################### ", "\6 An\7H\6behind the CPN indicates that ", "\6 the page is on hold. This inhibits ", "\6 subpage cycling and page updates. ", "\6 ", "\6 A\5*\6indicates that the page con- ", "\6 tains concealed text. ", "\6 ", "\6 A CPN in the form\2Sxx\6is shown if ", "\6 a specific subpage is selected. ", " ", "\6 ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", " ", "\4\35\7Back 910\13 Index 900 Next 912\13 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt912-01.out000066400000000000000000000023251345074102600146610ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.1.2 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0031/2 ", "\6\15Selecting Pages: ", "\6\15Selecting Pages: ", "\24 #################################### ", "\6 To select a specific page, you may ", "\6 either enter the page number with ", "\6 the keyboard or click with the\7left ", "\6 mouse button on a page number some- ", "\6 where on the screen. ", "\6 ", "\6 Clicking with the\7middle\6button will ", "\6 show the page in a child window. If ", "\6 there is no child window, a new one ", "\6 will be opened. ", "\6 ", "\24 pppppppppppppppppppppppppppppppppppp ", " (Click on\0031/2\7for next page) ", " ", "\4\35\7Back 911\13 Index 900 Next 913 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt912-02.out000066400000000000000000000023251345074102600146620ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.1.2 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0032/2 ", "\6\15Selecting Pages: ", "\6\15Selecting Pages: ", "\24 #################################### ", "\6 AleVT also recognizes something like ", "\3 3/7\6as a valid page number. Clicking ", "\6 with the\7left\6button will cycle to ", "\6 the next subpage of the current page. ", "\6 The\7middle\6buttons cycles backwards. ", "\6 ", "\6 For each window a history of recent- ", "\6 ly visited pages is kept. Pressing ", "\6 the\7right\6mouse button will take you ", "\6 back to the previous page. ", "\6 ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", " ", "\4\35\7Back 911\13 Index 900 Next 913 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt913.out000066400000000000000000000023151345074102600144430ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.1.2 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " ", "\6\15FastText Menu: ", "\6\15FastText Menu: ", "\24 #################################### ", "\6 The last line of each window shows ", "\6 the FastText Menu (only if one is ", "\6 transmitted for that page). ", "\6 ", "\6 It consists of up to four colored ", "\6 labels. You may click on a label ", "\6 or press one of the function keys ", "\6 F1-F4 to go to the associated page. ", "\6 ", "\6 For the 5th (white) key present on ", "\6 some remote controls press F5. ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", " ", "\4\35\7Back 912\13 Index 900 Next 914\13 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt914-01.out000066400000000000000000000023261345074102600146640ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.2.5 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0031/2 ", "\6\15Keyboard Commands: ", "\6\15Keyboard Commands: ", "\24 #################################### ", " 0\6-\0079 \6Enter page number ", " q\6or\7ESC \6Close window ", " h \6Goto page 900 (help page) ", " i \6Goto page 100 (index page) ", " o \6Open a new window ", " SPACE \6Hold page ", " RIGHT \6Goto next page ", " LEFT \6Goto previous page ", " DOWN \6Goto next subpage ", " UP \6Goto previous subpage ", " BACKSPACE\6Previous page from history ", "\24 pppppppppppppppppppppppppppppppppppp ", " (Click on\0031/2\7for next page) ", " ", "\4\35\7Back 913 Index 900 Next 915 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt914-02.out000066400000000000000000000023571345074102600146710ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7 Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \0071.5.0-pre4 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " \0032/2 ", "\6\15Keyboard Commands: ", "\6\15Keyboard Commands: ", "\24 #################################### ", " s \6Save page to file ", " c \6Clear page cache ", " r \6Reveal concealed text ", " F1\6-\7F5 \6FastText keys \1\177\2\177\3\177\6\177\7\177 ", " /\6and\7? \6Search forward/backward ", " n\6and\7N \6Search next/previous ", " f\6and\7F \6Fine tune the decoder ", " e \6Error reduction on/off ", " b \6Error bell on/off ", "\6 Holding the\7shift\6key while pressing ", "\6 one of the\7cursor\6keys allows selec- ", "\6 ting the 'hex' pages (ie 1f1). ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", "\4\35\7Back 913 Index 900 Next 915 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt915.out000066400000000000000000000023151345074102600144450ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.1.2 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " ", "\6\15Cut & Paste: ", "\6\15Cut & Paste: ", "\24 #################################### ", "\6 AleVT supports the X11 selection ", "\6 protocol for text and graphics. ", "\6 ", "\6 You may mark a rectangular area of ", "\6 a window with the\7left\6mouse button ", "\6 and paste that area into another ", "\6 application like xterm, xpaint, or ", "\6 xmag. Unfortunately, gimp doesn't ", "\6 support pasting from external appli- ", "\6 cations. ", "\6 ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", " ", "\4\35\7Back 914\13 Index 900 Next 999 \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vt999.out000066400000000000000000000023311345074102600144570ustar00rootroot00000000000000#ifndef HELP_HEADER " \6AleVT Online Help System ", " \22`p0`0 p `0pppp ", "\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34", "\4\35\22\177,\177j5\177.! +t>! j5 \7 1.1.2 \34", " \22# #\42!\42# \42 \42! ", #else HELP_HEADER #endif " ", "\6\15QuickClick: ", "\6\15QuickClick: ", "\24 #################################### ", "\6 100 200 300 400 500 600 700 800 ", "\6 101 201 301 401 501 601 701 801 ", "\6 110 210 310 410 510 610 710 810 ", "\6 120\006220 320 420 520 620 720 820 \13 ", "\6 130 230 330 430 530 630 730 830 ", "\6 140\006240 340 440 540 640 740 840 \13 ", "\6 150 250 350 450 550 650 750 850 ", "\6 160\006260 360 460 560 660 760 860 ", "\6 170 270 370 470 570 670 770 870 ", "\6 180\006280 380 480 580 680 780 880 ", "\6 190 290 390 490 590 690 790 890 ", "\24 pppppppppppppppppppppppppppppppppppp ", " ", " ", "\4\35\7Back 915 Index 900 Next --- \34", "\1Page 100 \2Page 200 \3Page 300 \6Page 400\34", alevt-v1.8.0/vtxt-iso8859-7.bdf000066400000000000000000001251341345074102600160050ustar00rootroot00000000000000STARTFONT 2.1 FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-1 SIZE 1 75 75 FONTBOUNDINGBOX 9 16 0 -4 STARTPROPERTIES 10 POINT_SIZE 1 PIXEL_SIZE 16 RESOLUTION_X 75 RESOLUTION_Y 75 FONT_ASCENT 12 FONT_DESCENT 4 AVERAGE_WIDTH 90 SPACING "C" _XMBDFED_INFO "Edited with xmbdfed 4.5." FONT "vtxt" ENDPROPERTIES CHARS 250 STARTCHAR char0 ENCODING 0 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 1 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 2 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 3 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 4 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 5 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 6 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 7 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 8 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 9 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 10 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 11 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 12 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 13 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 14 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 15 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 16 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 17 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 18 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 19 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 20 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 21 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 22 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 23 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 24 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 25 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 26 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 27 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 28 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 29 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 30 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 31 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 0000 0000 ENDCHAR STARTCHAR char32 ENCODING 32 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char33 ENCODING 33 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3C00 3C00 3C00 1800 1800 1800 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char34 ENCODING 34 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6600 6600 6600 2400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char35 ENCODING 35 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3600 3600 7F00 3600 3600 3600 7F00 3600 3600 0000 0000 0000 0000 ENDCHAR STARTCHAR char36 ENCODING 36 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 0C00 3E00 6300 6100 6000 3E00 0300 0300 4300 6300 3E00 0C00 0C00 0000 0000 ENDCHAR STARTCHAR char37 ENCODING 37 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6100 6300 0600 0C00 1800 3000 6300 4300 0000 0000 0000 0000 ENDCHAR STARTCHAR char38 ENCODING 38 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 3600 1C00 3B00 6E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char39 ENCODING 39 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 3000 3000 6000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char40 ENCODING 40 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0C00 1800 3000 3000 3000 3000 3000 3000 1800 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char41 ENCODING 41 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3000 1800 0C00 0C00 0C00 0C00 0C00 0C00 1800 3000 0000 0000 0000 0000 ENDCHAR STARTCHAR char42 ENCODING 42 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6600 3C00 FF00 3C00 6600 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char43 ENCODING 43 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1800 1800 7E00 1800 1800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char44 ENCODING 44 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR char45 ENCODING 45 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 7F00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char46 ENCODING 46 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char47 ENCODING 47 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0100 0300 0600 0C00 1800 3000 6000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR char48 ENCODING 48 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 6600 C300 C300 DB00 DB00 C300 C300 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char49 ENCODING 49 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3800 7800 1800 1800 1800 1800 1800 1800 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char50 ENCODING 50 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 0300 0600 0C00 1800 3000 6000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char51 ENCODING 51 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 0300 0300 1E00 0300 0300 0300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char52 ENCODING 52 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0E00 1E00 3600 6600 7F00 0600 0600 0600 0F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char53 ENCODING 53 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 6000 6000 6000 7E00 0300 0300 0300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char54 ENCODING 54 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3000 6000 6000 7E00 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char55 ENCODING 55 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 6300 0300 0300 0600 0C00 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char56 ENCODING 56 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 3E00 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char57 ENCODING 57 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 3F00 0300 0300 0300 0600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char58 ENCODING 58 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char59 ENCODING 59 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 0000 0000 1800 1800 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR char60 ENCODING 60 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0600 0C00 1800 3000 6000 3000 1800 0C00 0600 0000 0000 0000 0000 ENDCHAR STARTCHAR char61 ENCODING 61 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7E00 0000 0000 7E00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char62 ENCODING 62 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6000 3000 1800 0C00 0600 0C00 1800 3000 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR char63 ENCODING 63 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 0600 0C00 0C00 0C00 0000 0C00 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char64 ENCODING 64 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3E00 6300 6300 6F00 6F00 6F00 6E00 6000 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char65 ENCODING 65 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char66 ENCODING 66 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3300 3300 3300 3300 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char67 ENCODING 67 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3300 6100 6000 6000 6000 6000 6100 3300 1E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char68 ENCODING 68 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7C00 3600 3300 3300 3300 3300 3300 3300 3600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char69 ENCODING 69 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char70 ENCODING 70 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 3300 3100 3400 3C00 3400 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char71 ENCODING 71 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3300 6100 6000 6000 6F00 6300 6300 3300 1D00 0000 0000 0000 0000 ENDCHAR STARTCHAR char72 ENCODING 72 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 6300 6300 6300 7F00 6300 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char73 ENCODING 73 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 1800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char74 ENCODING 74 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0F00 0600 0600 0600 0600 0600 6600 6600 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char75 ENCODING 75 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7300 3300 3300 3600 3C00 3C00 3600 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char76 ENCODING 76 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7800 3000 3000 3000 3000 3000 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char77 ENCODING 77 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 E700 FF00 FF00 DB00 C300 C300 C300 C300 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char78 ENCODING 78 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 7300 7B00 7F00 6F00 6700 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char79 ENCODING 79 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char80 ENCODING 80 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3000 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char81 ENCODING 81 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 6300 6300 6300 6B00 6F00 3E00 0600 0700 0000 0000 ENDCHAR STARTCHAR char82 ENCODING 82 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3600 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char83 ENCODING 83 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 3000 1C00 0600 0300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char84 ENCODING 84 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 DB00 9900 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char85 ENCODING 85 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char86 ENCODING 86 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 C300 C300 C300 C300 6600 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char87 ENCODING 87 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 C300 C300 DB00 DB00 FF00 6600 6600 0000 0000 0000 0000 ENDCHAR STARTCHAR char88 ENCODING 88 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 6600 3C00 1800 1800 3C00 6600 C300 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char89 ENCODING 89 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 6600 3C00 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char90 ENCODING 90 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 C300 8600 0C00 1800 3000 6000 C100 C300 FF00 0000 0000 0000 0000 ENDCHAR STARTCHAR char91 ENCODING 91 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 3000 3000 3000 3000 3000 3000 3000 3000 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char92 ENCODING 92 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4000 6000 7000 3800 1C00 0E00 0700 0300 0100 0000 0000 0000 0000 ENDCHAR STARTCHAR char93 ENCODING 93 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 0C00 0C00 0C00 0C00 0C00 0C00 0C00 0C00 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char94 ENCODING 94 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 1C00 3600 6300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char95 ENCODING 95 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FF80 0000 0000 ENDCHAR STARTCHAR char96 ENCODING 96 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3000 3000 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char97 ENCODING 97 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char98 ENCODING 98 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3C00 3600 3300 3300 3300 3300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char99 ENCODING 99 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6000 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char100 ENCODING 100 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 0600 0600 1E00 3600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char101 ENCODING 101 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char102 ENCODING 102 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 3200 3000 7800 3000 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char103 ENCODING 103 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3B00 6600 6600 6600 6600 6600 3E00 0600 6600 3C00 0000 ENDCHAR STARTCHAR char104 ENCODING 104 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3600 3B00 3300 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char105 ENCODING 105 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char106 ENCODING 106 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0600 0000 0E00 0600 0600 0600 0600 0600 0600 6600 6600 3C00 0000 ENDCHAR STARTCHAR char107 ENCODING 107 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3300 3600 3C00 3C00 3600 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char108 ENCODING 108 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3800 1800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char109 ENCODING 109 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 E600 FF00 DB00 DB00 DB00 DB00 DB00 0000 0000 0000 0000 ENDCHAR STARTCHAR char110 ENCODING 110 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3300 3300 3300 3300 3300 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR char111 ENCODING 111 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char112 ENCODING 112 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3300 3300 3300 3300 3300 3E00 3000 3000 3000 0000 ENDCHAR STARTCHAR char113 ENCODING 113 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3B00 6600 6600 6600 6600 6600 3E00 0600 0600 0600 0000 ENDCHAR STARTCHAR char114 ENCODING 114 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3B00 3300 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char115 ENCODING 115 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 3000 1C00 0600 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char116 ENCODING 116 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1800 1800 7E00 1800 1800 1800 1800 1B00 0E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char117 ENCODING 117 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char118 ENCODING 118 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 C300 C300 C300 6600 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char119 ENCODING 119 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 C300 C300 DB00 DB00 FF00 6600 0000 0000 0000 0000 ENDCHAR STARTCHAR char120 ENCODING 120 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 6600 3C00 1800 3C00 6600 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char121 ENCODING 121 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6300 6300 6300 6300 6300 6300 3F00 0300 0600 0C00 0000 ENDCHAR STARTCHAR char122 ENCODING 122 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7F00 6600 0C00 1800 3000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char123 ENCODING 123 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 1800 1800 1800 7000 1800 1800 1800 1800 0E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char124 ENCODING 124 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char125 ENCODING 125 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 1800 1800 1800 0E00 1800 1800 1800 1800 7000 0000 0000 0000 0000 ENDCHAR STARTCHAR char126 ENCODING 126 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3B00 6E00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char127 ENCODING 127 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7F00 7F00 7F00 7F00 7F00 7F00 7F00 7F00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 128 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 129 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 130 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 131 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 132 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 133 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 134 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 135 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 136 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 137 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 138 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 139 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 140 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 141 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 142 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 143 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 144 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 145 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 146 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 147 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 148 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 149 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 150 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 151 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 152 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 153 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 154 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 155 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 156 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 157 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 158 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 159 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 ENDCHAR STARTCHAR U+00A0 NO-BREAK SPACE ENCODING 160 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+02BD MODIFIER LETTER REVERSED COMMA ENCODING 161 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1800 1000 1000 0800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+02BC MODIFIER LETTER APOSTROPHE ENCODING 162 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1800 0800 0800 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00A3 POUND SIGN ENCODING 163 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 1000 1000 1000 7C00 1000 1000 1000 3E00 6100 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00A6 BROKEN BAR ENCODING 166 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 0800 0800 0000 0000 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00A7 SECTION SIGN ENCODING 167 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 4200 4000 3C00 4200 4200 3C00 0200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00A8 DIAERESIS ENCODING 168 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 2400 2400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00A9 COPYRIGHT SIGN ENCODING 169 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 4200 9900 A500 A100 A100 A500 9900 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK ENCODING 171 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1200 1200 2400 2400 4800 2400 2400 1200 1200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00AC NOT SIGN ENCODING 172 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 7E00 0200 0200 0200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00AD SOFT HYPHEN ENCODING 173 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 7E00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+2015 HORIZONTAL BAR ENCODING 175 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 FF00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00B0 DEGREE SIGN ENCODING 176 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 2800 2800 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00B1 PLUS-MINUS SIGN ENCODING 177 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 0800 7F00 0800 0800 0800 0000 7F00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00B2 SUPERSCRIPT TWO ENCODING 178 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1C00 2200 0200 1C00 2000 2000 3E00 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00B3 SUPERSCRIPT THREE ENCODING 179 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1C00 2200 0200 1C00 0200 2200 1C00 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0384 GREEK TONOS ENCODING 180 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 1000 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0385 GREEK DIALYTIKA TONOS ENCODING 181 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 1000 1000 4400 4400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS ENCODING 182 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 4000 4000 0000 1800 2400 2400 4200 4200 7E00 4200 4200 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00B7 MIDDLE DOT ENCODING 183 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS ENCODING 184 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 4000 4000 0000 7E00 4000 4000 4000 7C00 4000 4000 4000 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0389 GREEK CAPITAL LETTER ETA WITH TONOS ENCODING 185 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 4000 4000 0000 4200 4200 4200 4200 7E00 4200 4200 4200 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+038A GREEK CAPITAL LETTER IOTA WITH TONOS ENCODING 186 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 4000 4000 0000 3E00 0800 0800 0800 0800 0800 0800 0800 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK ENCODING 187 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4800 4800 2400 2400 1200 2400 2400 4800 4800 0000 0000 0000 0000 ENDCHAR STARTCHAR U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS ENCODING 188 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 4000 4000 0000 3C00 4200 4200 4200 4200 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+00BD VULGAR FRACTION ONE HALF ENCODING 189 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2200 6200 2400 2800 2800 1400 1A00 2200 4400 4E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS ENCODING 190 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 4000 4000 0000 4100 4100 2200 2200 1400 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS ENCODING 191 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 4000 4000 0000 3E00 4100 4100 4100 4100 2200 1400 1400 7700 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS ENCODING 192 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1000 5400 4400 0000 1000 1000 1000 1000 1000 1000 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0391 GREEK CAPITAL LETTER ALPHA ENCODING 193 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 2400 2400 4200 4200 7E00 4200 4200 4200 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0392 GREEK CAPITAL LETTER BETA ENCODING 194 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7C00 4200 4200 4200 7C00 4200 4200 4200 4200 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0393 GREEK CAPITAL LETTER GAMMA ENCODING 195 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 4000 4000 4000 4000 4000 4000 4000 4000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0394 GREEK CAPITAL LETTER DELTA ENCODING 196 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 1400 1400 2200 2200 2200 4100 4100 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0395 GREEK CAPITAL LETTER EPSILON ENCODING 197 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 4000 4000 4000 7C00 4000 4000 4000 4000 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0396 GREEK CAPITAL LETTER ZETA ENCODING 198 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 0200 0200 0400 0800 1000 2000 4000 4000 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0397 GREEK CAPITAL LETTER ETA ENCODING 199 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4200 4200 4200 4200 7E00 4200 4200 4200 4200 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0398 GREEK CAPITAL LETTER THETA ENCODING 200 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 4200 4200 4200 7E00 4200 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+0399 GREEK CAPITAL LETTER IOTA ENCODING 201 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 0800 0800 0800 0800 0800 0800 0800 0800 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+039A GREEK CAPITAL LETTER KAPPA ENCODING 202 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4200 4400 4800 5000 6000 6000 5000 4800 4400 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+039B GREEK CAPITAL LETTER LAMDA ENCODING 203 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 0800 1400 1400 2200 2200 2200 4100 4100 4100 0000 0000 0000 0000 ENDCHAR STARTCHAR U+039C GREEK CAPITAL LETTER MU ENCODING 204 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4200 4200 6600 6600 5A00 5A00 4200 4200 4200 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+039D GREEK CAPITAL LETTER NU ENCODING 205 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4200 6200 6200 5200 5200 4A00 4A00 4600 4600 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+039E GREEK CAPITAL LETTER XI ENCODING 206 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 0000 0000 0000 3C00 0000 0000 0000 0000 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+039F GREEK CAPITAL LETTER OMICRON ENCODING 207 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 4200 4200 4200 4200 4200 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03A0 GREEK CAPITAL LETTER PI ENCODING 208 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 2200 2200 2200 2200 2200 2200 2200 2200 2200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03A1 GREEK CAPITAL LETTER RHO ENCODING 209 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7C00 4200 4200 4200 7C00 4000 4000 4000 4000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03A3 GREEK CAPITAL LETTER SIGMA ENCODING 211 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 4000 2000 1000 0800 0800 1000 2000 4000 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03A4 GREEK CAPITAL LETTER TAU ENCODING 212 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 0800 0800 0800 0800 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03A5 GREEK CAPITAL LETTER UPSILON ENCODING 213 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4100 4100 2200 2200 1400 0800 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03A6 GREEK CAPITAL LETTER PHI ENCODING 214 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 0800 3E00 4900 4900 4900 4900 3E00 0800 1C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03A7 GREEK CAPITAL LETTER CHI ENCODING 215 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4200 4200 2400 2400 1800 1800 2400 2400 4200 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03A8 GREEK CAPITAL LETTER PSI ENCODING 216 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4900 4900 4900 4900 4900 3E00 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03A9 GREEK CAPITAL LETTER OMEGA ENCODING 217 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 4100 4100 4100 4100 4100 2200 1400 1400 7700 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA ENCODING 218 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 2400 2400 0000 3E00 0800 0800 0800 0800 0800 0800 0800 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA ENCODING 219 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 2400 2400 0000 4100 4100 2200 2200 1400 0800 0800 0800 0800 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03AC GREEK SMALL LETTER ALPHA WITH TONOS ENCODING 220 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 1000 0000 0000 3200 4A00 4400 4400 4400 4400 4A00 3200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03AD GREEK SMALL LETTER EPSILON WITH TONOS ENCODING 221 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 1000 0000 0000 3E00 4000 4000 3C00 4000 4000 4000 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03AE GREEK SMALL LETTER ETA WITH TONOS ENCODING 222 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 1000 0000 0000 5C00 6200 4200 4200 4200 4200 4200 4200 0200 0000 0000 0000 ENDCHAR STARTCHAR U+03AF GREEK SMALL LETTER IOTA WITH TONOS ENCODING 223 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 1000 0000 0000 1000 1000 1000 1000 1000 1000 1000 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS ENCODING 224 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 1000 4400 4400 0000 4200 4200 4200 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03B1 GREEK SMALL LETTER ALPHA ENCODING 225 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 3200 4A00 4400 4400 4400 4400 4A00 3200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03B2 GREEK SMALL LETTER BETA ENCODING 226 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3800 4400 4400 4400 7C00 4200 4200 4200 6200 5C00 4000 4000 0000 0000 ENDCHAR STARTCHAR U+03B3 GREEK SMALL LETTER GAMMA ENCODING 227 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 3100 4900 0A00 0400 0800 0800 1000 1000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03B4 GREEK SMALL LETTER DELTA ENCODING 228 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 2000 2000 2000 1800 2400 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03B5 GREEK SMALL LETTER EPSILON ENCODING 229 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 3C00 4200 4000 3C00 4000 4000 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03B6 GREEK SMALL LETTER ZETA ENCODING 230 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2000 2000 1C00 0800 1000 2000 2000 2000 2000 1C00 0200 1C00 0000 0000 ENDCHAR STARTCHAR U+03B7 GREEK SMALL LETTER ETA ENCODING 231 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 5C00 6200 4200 4200 4200 4200 4200 4200 0200 0200 0000 0000 ENDCHAR STARTCHAR U+03B8 GREEK SMALL LETTER THETA ENCODING 232 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 2400 2400 4200 7E00 4200 4200 2400 2400 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03B9 GREEK SMALL LETTER IOTA ENCODING 233 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1000 1000 1000 1000 1000 1000 1000 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03BA GREEK SMALL LETTER KAPPA ENCODING 234 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 2200 2400 2800 3000 3000 2800 2400 2200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03BB GREEK SMALL LETTER LAMDA ENCODING 235 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 2000 2000 1000 1000 0800 1800 2400 2400 4200 4200 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03BC GREEK SMALL LETTER MU ENCODING 236 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 4200 4200 4200 4200 6600 6600 5A00 4200 4000 4000 0000 0000 ENDCHAR STARTCHAR U+03BD GREEK SMALL LETTER NU ENCODING 237 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 4200 4200 4200 4400 4400 4800 5000 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03BE GREEK SMALL LETTER XI ENCODING 238 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 4000 4000 3C00 4000 4000 3C00 4000 4000 3C00 0200 0200 3C00 0000 0000 ENDCHAR STARTCHAR U+03BF GREEK SMALL LETTER OMICRON ENCODING 239 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 3C00 4200 4200 4200 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03C0 GREEK SMALL LETTER PI ENCODING 240 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 7E00 2400 2400 2400 2400 2400 2400 2400 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03C1 GREEK SMALL LETTER RHO ENCODING 241 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 3C00 4200 4200 4200 4200 4200 6200 5C00 4000 4000 0000 0000 ENDCHAR STARTCHAR U+03C2 GREEK SMALL LETTER FINAL SIGMA ENCODING 242 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1E00 2000 4000 4000 4000 2000 1C00 0200 0200 1C00 0000 0000 ENDCHAR STARTCHAR U+03C3 GREEK SMALL LETTER SIGMA ENCODING 243 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 3F00 4800 4400 4400 4400 4400 4400 3800 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03C4 GREEK SMALL LETTER TAU ENCODING 244 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 7E00 1000 1000 1000 1000 1000 1000 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03C5 GREEK SMALL LETTER UPSILON ENCODING 245 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 4200 4200 4200 4200 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03C6 GREEK SMALL LETTER PHI ENCODING 246 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 3E00 4900 4900 4900 4900 4900 4900 3E00 0800 0800 0000 0000 ENDCHAR STARTCHAR U+03C7 GREEK SMALL LETTER CHI ENCODING 247 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 4200 4200 2400 2400 1800 1800 2400 2400 4200 4200 0000 0000 ENDCHAR STARTCHAR U+03C8 GREEK SMALL LETTER PSI ENCODING 248 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 4900 4900 4900 4900 4900 3E00 0800 0800 0000 0000 ENDCHAR STARTCHAR U+03C9 GREEK SMALL LETTER OMEGA ENCODING 249 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 2200 4100 4100 4900 4900 4900 4900 3600 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA ENCODING 250 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 2400 2400 0000 0000 1000 1000 1000 1000 1000 1000 1000 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA ENCODING 251 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 2400 2400 0000 0000 4200 4200 4200 4200 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03CC GREEK SMALL LETTER OMICRON WITH TONOS ENCODING 252 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 1000 0000 0000 3C00 4200 4200 4200 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03CD GREEK SMALL LETTER UPSILON WITH TONOS ENCODING 253 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1000 1000 0000 0000 4200 4200 4200 4200 4200 4200 4200 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR U+03CE GREEK SMALL LETTER OMEGA WITH TONOS ENCODING 254 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 0800 0000 0000 2200 4100 4100 4900 4900 4900 4900 3600 0000 0000 0000 0000 ENDCHAR ENDFONT alevt-v1.8.0/vtxt-koi8.bdf000066400000000000000000001224461345074102600153660ustar00rootroot00000000000000STARTFONT 2.1 FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-1 SIZE 1 75 75 FONTBOUNDINGBOX 9 16 0 -4 STARTPROPERTIES 10 POINT_SIZE 1 PIXEL_SIZE 16 RESOLUTION_X 75 RESOLUTION_Y 75 FONT_ASCENT 12 FONT_DESCENT 4 AVERAGE_WIDTH 90 SPACING "C" _XMBDFED_INFO "Edited with xmbdfed 3.0." FONT "vtxt" ENDPROPERTIES CHARS 256 STARTCHAR char0 ENCODING 0 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 1 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 2 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 3 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 4 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 5 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 6 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 7 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 8 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 9 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 10 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 11 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 12 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 13 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 14 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 15 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 16 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 17 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 18 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 19 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char0 ENCODING 20 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 21 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 22 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 23 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char0 ENCODING 24 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 25 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 26 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 27 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char0 ENCODING 28 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 29 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 30 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 31 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char32 ENCODING 32 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char33 ENCODING 33 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3C00 3C00 3C00 1800 1800 1800 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char34 ENCODING 34 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6600 6600 6600 2400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char35 ENCODING 35 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3600 3600 7F00 3600 3600 3600 7F00 3600 3600 0000 0000 0000 0000 ENDCHAR STARTCHAR char36 ENCODING 36 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 0C00 3E00 6300 6100 6000 3E00 0300 0300 4300 6300 3E00 0C00 0C00 0000 0000 ENDCHAR STARTCHAR char37 ENCODING 37 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6100 6300 0600 0C00 1800 3000 6300 4300 0000 0000 0000 0000 ENDCHAR STARTCHAR char38 ENCODING 38 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 3600 1C00 3B00 6E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char39 ENCODING 39 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 3000 3000 6000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char40 ENCODING 40 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0C00 1800 3000 3000 3000 3000 3000 3000 1800 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char41 ENCODING 41 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3000 1800 0C00 0C00 0C00 0C00 0C00 0C00 1800 3000 0000 0000 0000 0000 ENDCHAR STARTCHAR char42 ENCODING 42 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6600 3C00 FF00 3C00 6600 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char43 ENCODING 43 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1800 1800 7E00 1800 1800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char44 ENCODING 44 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR char45 ENCODING 45 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 7F00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char46 ENCODING 46 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char47 ENCODING 47 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0100 0300 0600 0C00 1800 3000 6000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR char48 ENCODING 48 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 6600 C300 C300 DB00 DB00 C300 C300 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char49 ENCODING 49 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3800 7800 1800 1800 1800 1800 1800 1800 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char50 ENCODING 50 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 0300 0600 0C00 1800 3000 6000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char51 ENCODING 51 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 0300 0300 1E00 0300 0300 0300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char52 ENCODING 52 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0E00 1E00 3600 6600 7F00 0600 0600 0600 0F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char53 ENCODING 53 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 6000 6000 6000 7E00 0300 0300 0300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char54 ENCODING 54 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3000 6000 6000 7E00 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char55 ENCODING 55 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 6300 0300 0300 0600 0C00 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char56 ENCODING 56 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 3E00 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char57 ENCODING 57 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 3F00 0300 0300 0300 0600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char58 ENCODING 58 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char59 ENCODING 59 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 0000 0000 1800 1800 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR char60 ENCODING 60 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0600 0C00 1800 3000 6000 3000 1800 0C00 0600 0000 0000 0000 0000 ENDCHAR STARTCHAR char61 ENCODING 61 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7E00 0000 0000 7E00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char62 ENCODING 62 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6000 3000 1800 0C00 0600 0C00 1800 3000 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR char63 ENCODING 63 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 0600 0C00 0C00 0C00 0000 0C00 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char64 ENCODING 64 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3E00 6300 6300 6F00 6F00 6F00 6E00 6000 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char65 ENCODING 65 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char66 ENCODING 66 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3300 3300 3300 3300 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char67 ENCODING 67 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3300 6100 6000 6000 6000 6000 6100 3300 1E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char68 ENCODING 68 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7C00 3600 3300 3300 3300 3300 3300 3300 3600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char69 ENCODING 69 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char70 ENCODING 70 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 3300 3100 3400 3C00 3400 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char71 ENCODING 71 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3300 6100 6000 6000 6F00 6300 6300 3300 1D00 0000 0000 0000 0000 ENDCHAR STARTCHAR char72 ENCODING 72 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 6300 6300 6300 7F00 6300 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char73 ENCODING 73 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 1800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char74 ENCODING 74 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0F00 0600 0600 0600 0600 0600 6600 6600 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char75 ENCODING 75 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7300 3300 3300 3600 3C00 3C00 3600 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char76 ENCODING 76 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7800 3000 3000 3000 3000 3000 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char77 ENCODING 77 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 E700 FF00 FF00 DB00 C300 C300 C300 C300 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char78 ENCODING 78 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 7300 7B00 7F00 6F00 6700 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char79 ENCODING 79 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char80 ENCODING 80 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3000 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char81 ENCODING 81 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 6300 6300 6300 6B00 6F00 3E00 0600 0700 0000 0000 ENDCHAR STARTCHAR char82 ENCODING 82 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3600 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char83 ENCODING 83 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 3000 1C00 0600 0300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char84 ENCODING 84 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 DB00 9900 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char85 ENCODING 85 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char86 ENCODING 86 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 C300 C300 C300 C300 6600 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char87 ENCODING 87 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 C300 C300 DB00 DB00 FF00 6600 6600 0000 0000 0000 0000 ENDCHAR STARTCHAR char88 ENCODING 88 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 6600 3C00 1800 1800 3C00 6600 C300 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char89 ENCODING 89 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 6600 3C00 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char90 ENCODING 90 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 C300 8600 0C00 1800 3000 6000 C100 C300 FF00 0000 0000 0000 0000 ENDCHAR STARTCHAR char91 ENCODING 91 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 3000 3000 3000 3000 3000 3000 3000 3000 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char92 ENCODING 92 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4000 6000 7000 3800 1C00 0E00 0700 0300 0100 0000 0000 0000 0000 ENDCHAR STARTCHAR char93 ENCODING 93 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 0C00 0C00 0C00 0C00 0C00 0C00 0C00 0C00 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char94 ENCODING 94 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 1C00 3600 6300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char95 ENCODING 95 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FF80 0000 0000 ENDCHAR STARTCHAR char96 ENCODING 96 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3000 3000 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char97 ENCODING 97 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char98 ENCODING 98 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3C00 3600 3300 3300 3300 3300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char99 ENCODING 99 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6000 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char100 ENCODING 100 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 0600 0600 1E00 3600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char101 ENCODING 101 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char102 ENCODING 102 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 3200 3000 7800 3000 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char103 ENCODING 103 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3B00 6600 6600 6600 6600 6600 3E00 0600 6600 3C00 0000 ENDCHAR STARTCHAR char104 ENCODING 104 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3600 3B00 3300 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char105 ENCODING 105 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char106 ENCODING 106 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0600 0000 0E00 0600 0600 0600 0600 0600 0600 6600 6600 3C00 0000 ENDCHAR STARTCHAR char107 ENCODING 107 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3300 3600 3C00 3C00 3600 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char108 ENCODING 108 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3800 1800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char109 ENCODING 109 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 E600 FF00 DB00 DB00 DB00 DB00 DB00 0000 0000 0000 0000 ENDCHAR STARTCHAR char110 ENCODING 110 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3300 3300 3300 3300 3300 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR char111 ENCODING 111 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char112 ENCODING 112 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3300 3300 3300 3300 3300 3E00 3000 3000 7800 0000 ENDCHAR STARTCHAR char113 ENCODING 113 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3B00 6600 6600 6600 6600 6600 3E00 0600 0600 0F00 0000 ENDCHAR STARTCHAR char114 ENCODING 114 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3B00 3300 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char115 ENCODING 115 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 3000 1C00 0600 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char116 ENCODING 116 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1800 1800 7E00 1800 1800 1800 1800 1B00 0E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char117 ENCODING 117 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char118 ENCODING 118 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 C300 C300 C300 6600 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char119 ENCODING 119 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 C300 C300 DB00 DB00 FF00 6600 0000 0000 0000 0000 ENDCHAR STARTCHAR char120 ENCODING 120 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 6600 3C00 1800 3C00 6600 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char121 ENCODING 121 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6300 6300 6300 6300 6300 6300 3F00 0300 0600 7C00 0000 ENDCHAR STARTCHAR char122 ENCODING 122 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7F00 6600 0C00 1800 3000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char123 ENCODING 123 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 1800 1800 1800 7000 1800 1800 1800 1800 0E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char124 ENCODING 124 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char125 ENCODING 125 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 1800 1800 1800 0E00 1800 1800 1800 1800 7000 0000 0000 0000 0000 ENDCHAR STARTCHAR char126 ENCODING 126 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3B00 6E00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char127 ENCODING 127 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7F00 7F00 7F00 7F00 7F00 7F00 7F00 7F00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 128 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 129 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 130 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 131 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 132 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 133 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 134 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 135 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 136 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 137 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 138 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 139 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 140 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 141 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 142 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 143 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 144 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 145 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 146 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 147 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char0 ENCODING 148 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 149 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 150 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 151 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char0 ENCODING 152 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 153 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 154 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 155 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char0 ENCODING 156 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 157 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 158 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 159 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char160 ENCODING 160 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 0880 0880 0880 0880 FF80 0880 0880 0880 0880 0880 FF80 0880 0880 0880 0880 ENDCHAR STARTCHAR char161 ENCODING 161 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 0000 1800 1800 1800 3C00 3C00 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char162 ENCODING 162 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1800 1800 7E00 C300 C000 C000 C000 C300 7E00 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char163 ENCODING 163 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1C00 3600 3200 3000 7800 3000 3000 3000 3000 7300 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char164 ENCODING 164 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 6300 3E00 6300 6300 6300 6300 3E00 6300 4100 0000 0000 0000 ENDCHAR STARTCHAR char165 ENCODING 165 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 6600 3C00 1800 FF00 1800 FF00 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char166 ENCODING 166 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6600 6600 6600 6600 6600 6600 6600 6600 6600 6600 6600 6600 0000 0000 0000 ENDCHAR STARTCHAR char167 ENCODING 167 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3E00 6300 3000 1C00 3600 6300 6300 3600 1C00 0600 6300 3E00 0000 0000 0000 ENDCHAR STARTCHAR char168 ENCODING 168 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 7E00 DB00 FF00 BD00 C300 E700 FF00 7E00 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char169 ENCODING 169 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 4100 5D00 5100 5100 5D00 4100 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char170 ENCODING 170 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3800 0C00 3C00 6400 3C00 0000 7C00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char171 ENCODING 171 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1800 3000 7F00 7F00 3000 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char172 ENCODING 172 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3C00 7E00 5A00 1800 1800 1800 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char173 ENCODING 173 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 FF80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char174 ENCODING 174 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 4100 5D00 5500 5900 5500 4100 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char175 ENCODING 175 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7F00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char176 ENCODING 176 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1C00 3600 3600 1C00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char177 ENCODING 177 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 7E00 1800 1800 0000 0000 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char178 ENCODING 178 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3800 6C00 1800 3000 6400 7C00 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char179 ENCODING 179 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7C00 0C00 1800 0C00 6C00 3800 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char180 ENCODING 180 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1800 3000 6000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char181 ENCODING 181 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6600 6600 6600 6600 6600 7E00 6300 6000 C000 0000 0000 0000 ENDCHAR STARTCHAR char182 ENCODING 182 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 DB00 DB00 DB00 7B00 1B00 1B00 1B00 1B00 1B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char183 ENCODING 183 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char184 ENCODING 184 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0080 0100 0300 0600 0C00 1C00 3000 7F00 7700 0E00 1C00 1800 3000 6000 8000 0000 ENDCHAR STARTCHAR char185 ENCODING 185 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 7000 3000 3000 3000 7800 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char186 ENCODING 186 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3800 6C00 4400 6C00 3800 0000 7C00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char187 ENCODING 187 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0C00 0600 7F00 7F00 0600 0C00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char188 ENCODING 188 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6000 6000 6100 6300 6600 0C00 1800 3300 6700 4B00 1F00 0300 0300 0000 0000 ENDCHAR STARTCHAR char189 ENCODING 189 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6000 6000 6100 6300 6600 0C00 1800 3000 6700 4D80 0300 0600 0F80 0000 0000 ENDCHAR STARTCHAR char190 ENCODING 190 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7800 1800 3900 1B00 7600 0C00 1800 3300 6700 4B00 1F00 0300 0300 0000 0000 ENDCHAR STARTCHAR char191 ENCODING 191 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 0000 1800 1800 3000 6000 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char238 ENCODING 192 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 CE00 DB00 DB00 FB00 DB00 DB00 CE00 0000 0000 0000 0000 ENDCHAR STARTCHAR char160 ENCODING 193 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7800 0C00 7C00 CC00 CC00 CC00 7600 0000 0000 0000 0000 ENDCHAR STARTCHAR char161 ENCODING 194 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0200 0600 3C00 6000 6000 7C00 6600 6600 6600 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char230 ENCODING 195 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 CC00 CC00 CC00 CC00 CC00 CC00 FE00 0600 0600 0000 0000 ENDCHAR STARTCHAR char164 ENCODING 196 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1E00 3600 3600 6600 6600 6600 FF00 C300 C300 0000 0000 ENDCHAR STARTCHAR char165 ENCODING 197 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7C00 C600 FE00 C000 C000 C600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char228 ENCODING 198 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 3C00 1800 7E00 DB00 DB00 DB00 DB00 7E00 1800 1800 3C00 0000 ENDCHAR STARTCHAR char163 ENCODING 199 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7E00 3200 3200 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char229 ENCODING 200 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C600 6C00 3800 3800 3800 6C00 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char168 ENCODING 201 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C600 C600 CE00 D600 E600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char169 ENCODING 202 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3800 3800 C600 C600 CE00 D600 E600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char170 ENCODING 203 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 E600 6C00 7800 7800 6C00 6600 E600 0000 0000 0000 0000 ENDCHAR STARTCHAR char171 ENCODING 204 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1E00 3600 6600 6600 6600 6600 6600 0000 0000 0000 0000 ENDCHAR STARTCHAR char172 ENCODING 205 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C600 EE00 FE00 FE00 D600 D600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char173 ENCODING 206 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C600 C600 C600 FE00 C600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char174 ENCODING 207 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7C00 C600 C600 C600 C600 C600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char175 ENCODING 208 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FE00 C600 C600 C600 C600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char239 ENCODING 209 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7E00 CC00 CC00 FC00 6C00 CC00 CE00 0000 0000 0000 0000 ENDCHAR STARTCHAR char224 ENCODING 210 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 DC00 6600 6600 6600 6600 6600 7C00 6000 6000 F000 0000 ENDCHAR STARTCHAR char225 ENCODING 211 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7C00 C600 C000 C000 C000 C600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char226 ENCODING 212 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7E00 5A00 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char227 ENCODING 213 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C600 C600 C600 C600 C600 7E00 0600 0600 C600 7C00 0000 ENDCHAR STARTCHAR char166 ENCODING 214 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 D600 D600 5400 7C00 5400 D600 D600 0000 0000 0000 0000 ENDCHAR STARTCHAR char162 ENCODING 215 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FC00 6600 6600 7C00 6600 6600 FC00 0000 0000 0000 0000 ENDCHAR STARTCHAR char236 ENCODING 216 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 6000 6000 7C00 6600 6600 FC00 0000 0000 0000 0000 ENDCHAR STARTCHAR char235 ENCODING 217 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C600 C600 C600 F600 DE00 DE00 F600 0000 0000 0000 0000 ENDCHAR STARTCHAR char167 ENCODING 218 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3C00 6600 0600 0C00 0600 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char232 ENCODING 219 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 D600 D600 D600 D600 D600 D600 FE00 0000 0000 0000 0000 ENDCHAR STARTCHAR char237 ENCODING 220 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3C00 6600 0600 1E00 0600 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char233 ENCODING 221 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 D600 D600 D600 D600 D600 D600 FE00 0300 0300 0000 0000 ENDCHAR STARTCHAR char231 ENCODING 222 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C600 C600 C600 C600 7E00 0600 0600 0000 0000 0000 0000 ENDCHAR STARTCHAR char234 ENCODING 223 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F800 B000 3000 3E00 3300 3300 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char158 ENCODING 224 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 CE00 DB00 DB00 DB00 FB00 DB00 DB00 DB00 DB00 CE00 0000 0000 0000 0000 ENDCHAR STARTCHAR char128 ENCODING 225 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3600 6600 C600 C600 FE00 C600 C600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char129 ENCODING 226 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FE00 6200 6200 6000 7C00 6600 6600 6600 6600 FC00 0000 0000 0000 0000 ENDCHAR STARTCHAR char150 ENCODING 227 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 CC00 CC00 CC00 CC00 CC00 CC00 CC00 CC00 CC00 FE00 0600 0600 0000 0000 ENDCHAR STARTCHAR char132 ENCODING 228 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3600 6600 6600 6600 6600 6600 6600 6600 FF00 C300 8100 0000 0000 ENDCHAR STARTCHAR char133 ENCODING 229 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FE00 6600 6200 6800 7800 6800 6000 6200 6600 FE00 0000 0000 0000 0000 ENDCHAR STARTCHAR char148 ENCODING 230 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3C00 1800 7E00 DB00 DB00 DB00 DB00 DB00 7E00 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char131 ENCODING 231 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FE00 6200 6200 6000 6000 6000 6000 6000 6000 F000 0000 0000 0000 0000 ENDCHAR STARTCHAR char149 ENCODING 232 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C600 C600 6C00 7C00 3800 3800 7C00 6C00 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char136 ENCODING 233 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C600 C600 CE00 CE00 D600 E600 E600 C600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char137 ENCODING 234 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3800 3800 C600 C600 CE00 CE00 D600 E600 E600 C600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char138 ENCODING 235 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 E600 6600 6C00 6C00 7800 7800 6C00 6C00 6600 E600 0000 0000 0000 0000 ENDCHAR STARTCHAR char139 ENCODING 236 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3600 6600 C600 C600 C600 C600 C600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char140 ENCODING 237 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C600 EE00 FE00 FE00 D600 C600 C600 C600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char141 ENCODING 238 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C600 C600 C600 C600 FE00 C600 C600 C600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char142 ENCODING 239 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7C00 C600 C600 C600 C600 C600 C600 C600 C600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char143 ENCODING 240 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FE00 C600 C600 C600 C600 C600 C600 C600 C600 C600 0000 0000 0000 0000 ENDCHAR STARTCHAR char159 ENCODING 241 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3F00 6600 6600 6600 3E00 3E00 6600 6600 6600 E700 0000 0000 0000 0000 ENDCHAR STARTCHAR char144 ENCODING 242 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FC00 6600 6600 6600 7C00 6000 6000 6000 6000 F000 0000 0000 0000 0000 ENDCHAR STARTCHAR char145 ENCODING 243 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 6600 C200 C000 C000 C000 C000 C200 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char146 ENCODING 244 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 5A00 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char147 ENCODING 245 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C600 C600 C600 C600 C600 7E00 0600 0600 C600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char134 ENCODING 246 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 D600 D600 5400 5400 7C00 7C00 5400 D600 D600 D600 0000 0000 0000 0000 ENDCHAR STARTCHAR char130 ENCODING 247 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FC00 6600 6600 6600 7C00 6600 6600 6600 6600 FC00 0000 0000 0000 0000 ENDCHAR STARTCHAR char156 ENCODING 248 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 F000 6000 6000 6000 7C00 6600 6600 6600 6600 FC00 0000 0000 0000 0000 ENDCHAR STARTCHAR char155 ENCODING 249 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 C300 F300 DB00 DB00 DB00 DB00 F300 0000 0000 0000 0000 ENDCHAR STARTCHAR char135 ENCODING 250 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7C00 C600 0600 0600 3C00 0600 0600 0600 C600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char152 ENCODING 251 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 DB00 DB00 DB00 DB00 DB00 DB00 DB00 DB00 DB00 FF00 0000 0000 0000 0000 ENDCHAR STARTCHAR char157 ENCODING 252 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7C00 C600 0600 2600 3E00 2600 0600 0600 C600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char153 ENCODING 253 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 DB00 DB00 DB00 DB00 DB00 DB00 DB00 DB00 DB00 FF00 0300 0300 0000 0000 ENDCHAR STARTCHAR char151 ENCODING 254 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C600 C600 C600 C600 C600 7E00 0600 0600 0600 0600 0000 0000 0000 0000 ENDCHAR STARTCHAR char154 ENCODING 255 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 F800 B000 3000 3000 3C00 3600 3600 3600 3600 7C00 0000 0000 0000 0000 ENDCHAR ENDFONT alevt-v1.8.0/vtxt-latin-1.bdf000066400000000000000000001224461345074102600157610ustar00rootroot00000000000000STARTFONT 2.1 FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-1 SIZE 1 75 75 FONTBOUNDINGBOX 9 16 0 -4 STARTPROPERTIES 10 POINT_SIZE 1 PIXEL_SIZE 16 RESOLUTION_X 75 RESOLUTION_Y 75 FONT_ASCENT 12 FONT_DESCENT 4 AVERAGE_WIDTH 90 SPACING "C" _XMBDFED_INFO "Edited with xmbdfed 2.4." FONT "vtxt" ENDPROPERTIES CHARS 256 STARTCHAR char0 ENCODING 0 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 1 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 2 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 3 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 4 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 5 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 6 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 7 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 8 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 9 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 10 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 11 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 12 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 13 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 14 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 15 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 16 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 17 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 18 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 19 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char0 ENCODING 20 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 21 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 22 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 23 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char0 ENCODING 24 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 25 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 26 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 27 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char0 ENCODING 28 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 29 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 30 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 31 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char32 ENCODING 32 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char33 ENCODING 33 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3C00 3C00 3C00 1800 1800 1800 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char34 ENCODING 34 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6600 6600 6600 2400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char35 ENCODING 35 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3600 3600 7F00 3600 3600 3600 7F00 3600 3600 0000 0000 0000 0000 ENDCHAR STARTCHAR char36 ENCODING 36 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 0C00 3E00 6300 6100 6000 3E00 0300 0300 4300 6300 3E00 0C00 0C00 0000 0000 ENDCHAR STARTCHAR char37 ENCODING 37 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6100 6300 0600 0C00 1800 3000 6300 4300 0000 0000 0000 0000 ENDCHAR STARTCHAR char38 ENCODING 38 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 3600 1C00 3B00 6E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char39 ENCODING 39 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 3000 3000 6000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char40 ENCODING 40 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0C00 1800 3000 3000 3000 3000 3000 3000 1800 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char41 ENCODING 41 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3000 1800 0C00 0C00 0C00 0C00 0C00 0C00 1800 3000 0000 0000 0000 0000 ENDCHAR STARTCHAR char42 ENCODING 42 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6600 3C00 FF00 3C00 6600 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char43 ENCODING 43 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1800 1800 7E00 1800 1800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char44 ENCODING 44 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR char45 ENCODING 45 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 7F00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char46 ENCODING 46 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char47 ENCODING 47 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0100 0300 0600 0C00 1800 3000 6000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR char48 ENCODING 48 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 6600 C300 C300 DB00 DB00 C300 C300 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char49 ENCODING 49 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3800 7800 1800 1800 1800 1800 1800 1800 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char50 ENCODING 50 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 0300 0600 0C00 1800 3000 6000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char51 ENCODING 51 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 0300 0300 1E00 0300 0300 0300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char52 ENCODING 52 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0E00 1E00 3600 6600 7F00 0600 0600 0600 0F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char53 ENCODING 53 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 6000 6000 6000 7E00 0300 0300 0300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char54 ENCODING 54 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3000 6000 6000 7E00 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char55 ENCODING 55 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 6300 0300 0300 0600 0C00 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char56 ENCODING 56 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 3E00 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char57 ENCODING 57 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 3F00 0300 0300 0300 0600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char58 ENCODING 58 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char59 ENCODING 59 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 0000 0000 1800 1800 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR char60 ENCODING 60 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0600 0C00 1800 3000 6000 3000 1800 0C00 0600 0000 0000 0000 0000 ENDCHAR STARTCHAR char61 ENCODING 61 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7E00 0000 0000 7E00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char62 ENCODING 62 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6000 3000 1800 0C00 0600 0C00 1800 3000 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR char63 ENCODING 63 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 0600 0C00 0C00 0C00 0000 0C00 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char64 ENCODING 64 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3E00 6300 6300 6F00 6F00 6F00 6E00 6000 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char65 ENCODING 65 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char66 ENCODING 66 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3300 3300 3300 3300 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char67 ENCODING 67 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3300 6100 6000 6000 6000 6000 6100 3300 1E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char68 ENCODING 68 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7C00 3600 3300 3300 3300 3300 3300 3300 3600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char69 ENCODING 69 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char70 ENCODING 70 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 3300 3100 3400 3C00 3400 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char71 ENCODING 71 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3300 6100 6000 6000 6F00 6300 6300 3300 1D00 0000 0000 0000 0000 ENDCHAR STARTCHAR char72 ENCODING 72 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 6300 6300 6300 7F00 6300 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char73 ENCODING 73 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 1800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char74 ENCODING 74 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0F00 0600 0600 0600 0600 0600 6600 6600 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char75 ENCODING 75 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7300 3300 3300 3600 3C00 3C00 3600 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char76 ENCODING 76 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7800 3000 3000 3000 3000 3000 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char77 ENCODING 77 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 E700 FF00 FF00 DB00 C300 C300 C300 C300 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char78 ENCODING 78 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 7300 7B00 7F00 6F00 6700 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char79 ENCODING 79 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char80 ENCODING 80 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3000 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char81 ENCODING 81 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 6300 6300 6300 6B00 6F00 3E00 0600 0700 0000 0000 ENDCHAR STARTCHAR char82 ENCODING 82 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3600 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char83 ENCODING 83 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 3000 1C00 0600 0300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char84 ENCODING 84 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 DB00 9900 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char85 ENCODING 85 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char86 ENCODING 86 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 C300 C300 C300 C300 6600 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char87 ENCODING 87 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 C300 C300 DB00 DB00 FF00 6600 6600 0000 0000 0000 0000 ENDCHAR STARTCHAR char88 ENCODING 88 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 6600 3C00 1800 1800 3C00 6600 C300 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char89 ENCODING 89 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 6600 3C00 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char90 ENCODING 90 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 C300 8600 0C00 1800 3000 6000 C100 C300 FF00 0000 0000 0000 0000 ENDCHAR STARTCHAR char91 ENCODING 91 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 3000 3000 3000 3000 3000 3000 3000 3000 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char92 ENCODING 92 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4000 6000 7000 3800 1C00 0E00 0700 0300 0100 0000 0000 0000 0000 ENDCHAR STARTCHAR char93 ENCODING 93 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 0C00 0C00 0C00 0C00 0C00 0C00 0C00 0C00 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char94 ENCODING 94 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 1C00 3600 6300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char95 ENCODING 95 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FF80 0000 0000 ENDCHAR STARTCHAR char96 ENCODING 96 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3000 3000 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char97 ENCODING 97 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char98 ENCODING 98 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3C00 3600 3300 3300 3300 3300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char99 ENCODING 99 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6000 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char100 ENCODING 100 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 0600 0600 1E00 3600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char101 ENCODING 101 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char102 ENCODING 102 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 3200 3000 7800 3000 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char103 ENCODING 103 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3B00 6600 6600 6600 6600 6600 3E00 0600 6600 3C00 0000 ENDCHAR STARTCHAR char104 ENCODING 104 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3600 3B00 3300 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char105 ENCODING 105 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char106 ENCODING 106 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0600 0000 0E00 0600 0600 0600 0600 0600 0600 6600 6600 3C00 0000 ENDCHAR STARTCHAR char107 ENCODING 107 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3300 3600 3C00 3C00 3600 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char108 ENCODING 108 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3800 1800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char109 ENCODING 109 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 E600 FF00 DB00 DB00 DB00 DB00 DB00 0000 0000 0000 0000 ENDCHAR STARTCHAR char110 ENCODING 110 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3300 3300 3300 3300 3300 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR char111 ENCODING 111 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char112 ENCODING 112 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3300 3300 3300 3300 3300 3E00 3000 3000 7800 0000 ENDCHAR STARTCHAR char113 ENCODING 113 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3B00 6600 6600 6600 6600 6600 3E00 0600 0600 0F00 0000 ENDCHAR STARTCHAR char114 ENCODING 114 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3B00 3300 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char115 ENCODING 115 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 3000 1C00 0600 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char116 ENCODING 116 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1800 1800 7E00 1800 1800 1800 1800 1B00 0E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char117 ENCODING 117 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char118 ENCODING 118 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 C300 C300 C300 6600 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char119 ENCODING 119 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 C300 C300 DB00 DB00 FF00 6600 0000 0000 0000 0000 ENDCHAR STARTCHAR char120 ENCODING 120 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 6600 3C00 1800 3C00 6600 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char121 ENCODING 121 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6300 6300 6300 6300 6300 6300 3F00 0300 0600 7C00 0000 ENDCHAR STARTCHAR char122 ENCODING 122 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7F00 6600 0C00 1800 3000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char123 ENCODING 123 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 1800 1800 1800 7000 1800 1800 1800 1800 0E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char124 ENCODING 124 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char125 ENCODING 125 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 1800 1800 1800 0E00 1800 1800 1800 1800 7000 0000 0000 0000 0000 ENDCHAR STARTCHAR char126 ENCODING 126 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3B00 6E00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char127 ENCODING 127 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7F00 7F00 7F00 7F00 7F00 7F00 7F00 7F00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 128 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 129 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 130 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 131 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 132 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 133 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 134 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 135 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 136 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 137 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 138 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 139 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 140 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 141 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 142 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 143 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 144 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 145 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 146 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 147 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char0 ENCODING 148 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 149 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 150 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 151 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char0 ENCODING 152 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 153 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 154 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 155 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char0 ENCODING 156 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 157 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 158 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 159 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char160 ENCODING 160 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 0880 0880 0880 0880 FF80 0880 0880 0880 0880 0880 FF80 0880 0880 0880 0880 ENDCHAR STARTCHAR char161 ENCODING 161 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 0000 1800 1800 1800 3C00 3C00 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char162 ENCODING 162 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1800 1800 7E00 C300 C000 C000 C000 C300 7E00 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char163 ENCODING 163 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1C00 3600 3200 3000 7800 3000 3000 3000 3000 7300 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char164 ENCODING 164 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 6300 3E00 6300 6300 6300 6300 3E00 6300 4100 0000 0000 0000 ENDCHAR STARTCHAR char165 ENCODING 165 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 6600 3C00 1800 FF00 1800 FF00 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char166 ENCODING 166 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6600 6600 6600 6600 6600 6600 6600 6600 6600 6600 6600 6600 0000 0000 0000 ENDCHAR STARTCHAR char167 ENCODING 167 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3E00 6300 3000 1C00 3600 6300 6300 3600 1C00 0600 6300 3E00 0000 0000 0000 ENDCHAR STARTCHAR char168 ENCODING 168 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 7E00 DB00 FF00 BD00 C300 E700 FF00 7E00 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char169 ENCODING 169 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 4100 5D00 5100 5100 5D00 4100 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char170 ENCODING 170 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3800 0C00 3C00 6400 3C00 0000 7C00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char171 ENCODING 171 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1800 3000 7F00 7F00 3000 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char172 ENCODING 172 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3C00 7E00 5A00 1800 1800 1800 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char173 ENCODING 173 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 FF80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char174 ENCODING 174 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 4100 5D00 5500 5900 5500 4100 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char175 ENCODING 175 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7F00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char176 ENCODING 176 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1C00 3600 3600 1C00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char177 ENCODING 177 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 7E00 1800 1800 0000 0000 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char178 ENCODING 178 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3800 6C00 1800 3000 6400 7C00 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char179 ENCODING 179 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7C00 0C00 1800 0C00 6C00 3800 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char180 ENCODING 180 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1800 3000 6000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char181 ENCODING 181 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6600 6600 6600 6600 6600 7E00 6300 6000 C000 0000 0000 0000 ENDCHAR STARTCHAR char182 ENCODING 182 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 DB00 DB00 DB00 7B00 1B00 1B00 1B00 1B00 1B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char183 ENCODING 183 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char184 ENCODING 184 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0080 0100 0300 0600 0C00 1C00 3000 7F00 7700 0E00 1C00 1800 3000 6000 8000 0000 ENDCHAR STARTCHAR char185 ENCODING 185 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 7000 3000 3000 3000 7800 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char186 ENCODING 186 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3800 6C00 4400 6C00 3800 0000 7C00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char187 ENCODING 187 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0C00 0600 7F00 7F00 0600 0C00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char188 ENCODING 188 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6000 6000 6100 6300 6600 0C00 1800 3300 6700 4B00 1F00 0300 0300 0000 0000 ENDCHAR STARTCHAR char189 ENCODING 189 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6000 6000 6100 6300 6600 0C00 1800 3000 6700 4D80 0300 0600 0F80 0000 0000 ENDCHAR STARTCHAR char190 ENCODING 190 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 7800 1800 3900 1B00 7600 0C00 1800 3300 6700 4B00 1F00 0300 0300 0000 0000 ENDCHAR STARTCHAR char191 ENCODING 191 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 0000 1800 1800 3000 6000 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char192 ENCODING 192 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1800 0C00 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char193 ENCODING 193 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char194 ENCODING 194 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1C00 3600 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char195 ENCODING 195 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3B00 6E00 0000 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char196 ENCODING 196 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6300 0000 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char197 ENCODING 197 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1C00 1400 1C00 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char198 ENCODING 198 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1F00 3600 6600 6600 7F00 6600 6600 6600 6600 6700 0000 0000 0000 0000 ENDCHAR STARTCHAR char199 ENCODING 199 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1E00 3300 6100 6000 6000 6000 6100 3300 1E00 0600 0300 3E00 0000 ENDCHAR STARTCHAR char200 ENCODING 200 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1800 0C00 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char201 ENCODING 201 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char202 ENCODING 202 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1C00 3600 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char203 ENCODING 203 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6300 0000 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char204 ENCODING 204 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3000 1800 0000 3C00 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char205 ENCODING 205 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 0000 3C00 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char206 ENCODING 206 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3C00 6600 0000 3C00 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char207 ENCODING 207 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6600 0000 3C00 1800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char208 ENCODING 208 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 3600 3300 3300 7B00 7B00 3300 3300 3600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char209 ENCODING 209 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3B00 6E00 6300 7300 7B00 7F00 6F00 6700 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char210 ENCODING 210 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3000 1800 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char211 ENCODING 211 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0600 0C00 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char212 ENCODING 212 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1C00 3600 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char213 ENCODING 213 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3B00 6E00 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char214 ENCODING 214 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6300 0000 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char215 ENCODING 215 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6300 3600 1C00 0800 1C00 3600 6300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char216 ENCODING 216 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0100 0300 3E00 6700 6700 6F00 6B00 6B00 7B00 7300 7300 3E00 6000 4000 0000 0000 ENDCHAR STARTCHAR char217 ENCODING 217 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3000 1800 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char218 ENCODING 218 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0600 0C00 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char219 ENCODING 219 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1C00 1400 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char220 ENCODING 220 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6300 0000 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char221 ENCODING 221 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1800 3000 C300 C300 C300 6600 3C00 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char222 ENCODING 222 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 7800 3000 3E00 3300 3300 3300 3E00 3000 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char223 ENCODING 223 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 6300 6700 6E00 6C00 6600 6300 6B00 6E00 6000 4000 0000 0000 ENDCHAR STARTCHAR char224 ENCODING 224 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0C00 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char225 ENCODING 225 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0C00 1800 3000 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char226 ENCODING 226 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1C00 3600 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char227 ENCODING 227 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3B00 6E00 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char228 ENCODING 228 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6600 0000 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char229 ENCODING 229 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1C00 3600 1C00 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char230 ENCODING 230 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3B00 1B00 7E00 D800 DC00 7700 0000 0000 0000 0000 ENDCHAR STARTCHAR char231 ENCODING 231 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6000 6000 6000 6300 3E00 0C00 0600 3C00 0000 ENDCHAR STARTCHAR char232 ENCODING 232 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0C00 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char233 ENCODING 233 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0600 0C00 1800 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char234 ENCODING 234 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1C00 3600 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char235 ENCODING 235 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 0000 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char236 ENCODING 236 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6000 3000 1800 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char237 ENCODING 237 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0600 0C00 1800 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char238 ENCODING 238 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1800 3C00 6600 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char239 ENCODING 239 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6600 0000 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char100 ENCODING 240 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 0600 0F00 0600 3E00 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char241 ENCODING 241 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3B00 6E00 0000 6E00 3300 3300 3300 3300 3300 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR char242 ENCODING 242 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0C00 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char243 ENCODING 243 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0C00 1800 3000 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char244 ENCODING 244 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1C00 3600 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char245 ENCODING 245 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3B00 6E00 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char246 ENCODING 246 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 0000 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char247 ENCODING 247 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 7E00 0000 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char248 ENCODING 248 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0100 0300 3E00 6700 6F00 6B00 7B00 7300 3E00 6000 4000 0000 0000 ENDCHAR STARTCHAR char249 ENCODING 249 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 1800 0C00 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char250 ENCODING 250 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0C00 1800 3000 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char251 ENCODING 251 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1800 3C00 6600 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char252 ENCODING 252 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6600 0000 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char253 ENCODING 253 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0C00 1800 3000 0000 6300 6300 6300 6300 6300 6300 3F00 0300 0600 7C00 0000 ENDCHAR STARTCHAR char254 ENCODING 254 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7800 3000 3E00 3300 3300 3300 3300 3300 3E00 3000 3000 7800 0000 ENDCHAR STARTCHAR char255 ENCODING 255 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 0000 0000 6300 6300 6300 6300 6300 6300 3F00 0300 0600 7C00 0000 ENDCHAR ENDFONT alevt-v1.8.0/vtxt-latin-2.bdf000066400000000000000000001224271345074102600157610ustar00rootroot00000000000000STARTFONT 2.1 FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-2 SIZE 1 75 75 FONTBOUNDINGBOX 9 16 0 -4 STARTPROPERTIES 10 POINT_SIZE 1 PIXEL_SIZE 16 RESOLUTION_X 75 RESOLUTION_Y 75 FONT_ASCENT 12 FONT_DESCENT 4 AVERAGE_WIDTH 90 SPACING "C" _XMBDFED_INFO "Edited with xmbdfed 3.3." FONT "vtxt" ENDPROPERTIES CHARS 256 STARTCHAR char0 ENCODING 0 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 1 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 2 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 3 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 4 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 5 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 6 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 7 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 8 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 9 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 10 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 11 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 12 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 13 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char2 ENCODING 14 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char1 ENCODING 15 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 16 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 17 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 18 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 19 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char0 ENCODING 20 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 21 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 22 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 23 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char0 ENCODING 24 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 25 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 26 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 27 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char0 ENCODING 28 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 29 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char2 ENCODING 30 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char1 ENCODING 31 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 ENDCHAR STARTCHAR char32 ENCODING 32 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char33 ENCODING 33 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3C00 3C00 3C00 1800 1800 1800 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char34 ENCODING 34 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6600 6600 6600 2400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char35 ENCODING 35 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3600 3600 7F00 3600 3600 3600 7F00 3600 3600 0000 0000 0000 0000 ENDCHAR STARTCHAR char36 ENCODING 36 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 0C00 3E00 6300 6100 6000 3E00 0300 0300 4300 6300 3E00 0C00 0C00 0000 0000 ENDCHAR STARTCHAR char37 ENCODING 37 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6100 6300 0600 0C00 1800 3000 6300 4300 0000 0000 0000 0000 ENDCHAR STARTCHAR char38 ENCODING 38 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 3600 1C00 3B00 6E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char39 ENCODING 39 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3000 3000 3000 6000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char40 ENCODING 40 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0C00 1800 3000 3000 3000 3000 3000 3000 1800 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char41 ENCODING 41 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3000 1800 0C00 0C00 0C00 0C00 0C00 0C00 1800 3000 0000 0000 0000 0000 ENDCHAR STARTCHAR char42 ENCODING 42 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6600 3C00 FF00 3C00 6600 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char43 ENCODING 43 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 1800 1800 7E00 1800 1800 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char44 ENCODING 44 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR char45 ENCODING 45 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 7F00 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char46 ENCODING 46 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char47 ENCODING 47 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0100 0300 0600 0C00 1800 3000 6000 4000 0000 0000 0000 0000 ENDCHAR STARTCHAR char48 ENCODING 48 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 6600 C300 C300 DB00 DB00 C300 C300 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char49 ENCODING 49 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 3800 7800 1800 1800 1800 1800 1800 1800 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char50 ENCODING 50 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 0300 0600 0C00 1800 3000 6000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char51 ENCODING 51 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 0300 0300 1E00 0300 0300 0300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char52 ENCODING 52 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0E00 1E00 3600 6600 7F00 0600 0600 0600 0F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char53 ENCODING 53 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 6000 6000 6000 7E00 0300 0300 0300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char54 ENCODING 54 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3000 6000 6000 7E00 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char55 ENCODING 55 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 6300 0300 0300 0600 0C00 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char56 ENCODING 56 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 3E00 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char57 ENCODING 57 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 3F00 0300 0300 0300 0600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char58 ENCODING 58 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 0000 0000 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char59 ENCODING 59 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 0000 0000 1800 1800 1800 3000 0000 0000 0000 ENDCHAR STARTCHAR char60 ENCODING 60 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0600 0C00 1800 3000 6000 3000 1800 0C00 0600 0000 0000 0000 0000 ENDCHAR STARTCHAR char61 ENCODING 61 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7E00 0000 0000 7E00 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char62 ENCODING 62 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6000 3000 1800 0C00 0600 0C00 1800 3000 6000 0000 0000 0000 0000 ENDCHAR STARTCHAR char63 ENCODING 63 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 0600 0C00 0C00 0C00 0000 0C00 0C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char64 ENCODING 64 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3E00 6300 6300 6F00 6F00 6F00 6E00 6000 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char65 ENCODING 65 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char66 ENCODING 66 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3300 3300 3300 3300 7E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char67 ENCODING 67 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3300 6100 6000 6000 6000 6000 6100 3300 1E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char68 ENCODING 68 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7C00 3600 3300 3300 3300 3300 3300 3300 3600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char69 ENCODING 69 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char70 ENCODING 70 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 3300 3100 3400 3C00 3400 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char71 ENCODING 71 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1E00 3300 6100 6000 6000 6F00 6300 6300 3300 1D00 0000 0000 0000 0000 ENDCHAR STARTCHAR char72 ENCODING 72 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 6300 6300 6300 7F00 6300 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char73 ENCODING 73 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 1800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char74 ENCODING 74 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0F00 0600 0600 0600 0600 0600 6600 6600 6600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char75 ENCODING 75 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7300 3300 3300 3600 3C00 3C00 3600 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char76 ENCODING 76 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7800 3000 3000 3000 3000 3000 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char77 ENCODING 77 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 E700 FF00 FF00 DB00 C300 C300 C300 C300 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char78 ENCODING 78 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 7300 7B00 7F00 6F00 6700 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char79 ENCODING 79 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char80 ENCODING 80 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3000 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char81 ENCODING 81 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 6300 6300 6300 6300 6B00 6F00 3E00 0600 0700 0000 0000 ENDCHAR STARTCHAR char82 ENCODING 82 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7E00 3300 3300 3300 3E00 3600 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char83 ENCODING 83 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 3000 1C00 0600 0300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char84 ENCODING 84 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 DB00 9900 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char85 ENCODING 85 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char86 ENCODING 86 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 C300 C300 C300 C300 6600 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char87 ENCODING 87 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 C300 C300 DB00 DB00 FF00 6600 6600 0000 0000 0000 0000 ENDCHAR STARTCHAR char88 ENCODING 88 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 6600 3C00 1800 1800 3C00 6600 C300 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char89 ENCODING 89 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 C300 C300 C300 6600 3C00 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char90 ENCODING 90 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 C300 8600 0C00 1800 3000 6000 C100 C300 FF00 0000 0000 0000 0000 ENDCHAR STARTCHAR char91 ENCODING 91 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 3000 3000 3000 3000 3000 3000 3000 3000 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char92 ENCODING 92 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4000 6000 7000 3800 1C00 0E00 0700 0300 0100 0000 0000 0000 0000 ENDCHAR STARTCHAR char93 ENCODING 93 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 0C00 0C00 0C00 0C00 0C00 0C00 0C00 0C00 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char94 ENCODING 94 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 1C00 3600 6300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char95 ENCODING 95 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FF80 0000 0000 ENDCHAR STARTCHAR char96 ENCODING 96 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3000 3000 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char97 ENCODING 97 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char98 ENCODING 98 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3C00 3600 3300 3300 3300 3300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char99 ENCODING 99 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6000 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char100 ENCODING 100 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 0600 0600 1E00 3600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char101 ENCODING 101 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char102 ENCODING 102 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 3200 3000 7800 3000 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char103 ENCODING 103 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3B00 6600 6600 6600 6600 6600 3E00 0600 6600 3C00 0000 ENDCHAR STARTCHAR char104 ENCODING 104 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3600 3B00 3300 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char105 ENCODING 105 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char106 ENCODING 106 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0600 0000 0E00 0600 0600 0600 0600 0600 0600 6600 6600 3C00 0000 ENDCHAR STARTCHAR char107 ENCODING 107 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 3000 3000 3300 3600 3C00 3C00 3600 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char108 ENCODING 108 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3800 1800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char109 ENCODING 109 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 E600 FF00 DB00 DB00 DB00 DB00 DB00 0000 0000 0000 0000 ENDCHAR STARTCHAR char110 ENCODING 110 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3300 3300 3300 3300 3300 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR char111 ENCODING 111 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char112 ENCODING 112 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3300 3300 3300 3300 3300 3E00 3000 3000 7800 0000 ENDCHAR STARTCHAR char113 ENCODING 113 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3B00 6600 6600 6600 6600 6600 3E00 0600 0600 0F00 0000 ENDCHAR STARTCHAR char114 ENCODING 114 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6E00 3B00 3300 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char115 ENCODING 115 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 3000 1C00 0600 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char116 ENCODING 116 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1800 1800 7E00 1800 1800 1800 1800 1B00 0E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char117 ENCODING 117 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char118 ENCODING 118 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 C300 C300 C300 6600 3C00 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char119 ENCODING 119 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 C300 C300 DB00 DB00 FF00 6600 0000 0000 0000 0000 ENDCHAR STARTCHAR char120 ENCODING 120 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 C300 6600 3C00 1800 3C00 6600 C300 0000 0000 0000 0000 ENDCHAR STARTCHAR char121 ENCODING 121 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 6300 6300 6300 6300 6300 6300 3F00 0300 0600 7C00 0000 ENDCHAR STARTCHAR char122 ENCODING 122 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 7F00 6600 0C00 1800 3000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char123 ENCODING 123 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 1800 1800 1800 7000 1800 1800 1800 1800 0E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char124 ENCODING 124 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800 0000 0000 0000 0000 ENDCHAR STARTCHAR char125 ENCODING 125 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7000 1800 1800 1800 0E00 1800 1800 1800 1800 7000 0000 0000 0000 0000 ENDCHAR STARTCHAR char126 ENCODING 126 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3B00 6E00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char127 ENCODING 127 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 7F00 7F00 7F00 7F00 7F00 7F00 7F00 7F00 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char0 ENCODING 128 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 129 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 130 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 131 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 132 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 133 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 134 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 135 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 136 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 137 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 138 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 139 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 140 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 141 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char2 ENCODING 142 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char1 ENCODING 143 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 ENDCHAR STARTCHAR char0 ENCODING 144 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 145 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 146 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 147 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0000 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char0 ENCODING 148 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 149 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 150 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 151 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 F000 F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char0 ENCODING 152 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 153 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 154 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 155 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 0F80 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char0 ENCODING 156 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 157 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP F000 F000 F000 F000 F000 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char2 ENCODING 158 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0F80 0F80 0F80 0F80 0F80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char1 ENCODING 159 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 FF80 ENDCHAR STARTCHAR char160 ENCODING 160 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP FF80 0880 0880 0880 0880 FF80 0880 0880 0880 0880 0880 FF80 0880 0880 0880 0880 ENDCHAR STARTCHAR char65 ENCODING 161 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0600 0300 0000 0000 ENDCHAR STARTCHAR char162 ENCODING 162 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6600 3C00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char76 ENCODING 163 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7800 3000 3000 3C00 3800 3000 7000 F100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char164 ENCODING 164 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 4100 6300 3E00 6300 6300 6300 6300 3E00 6300 4100 0000 0000 0000 ENDCHAR STARTCHAR char76 ENCODING 165 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7B00 3300 3600 3000 3000 3000 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char83 ENCODING 166 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 3E00 6300 6300 3000 1C00 0600 0300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char167 ENCODING 167 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3E00 6300 3000 1C00 3600 6300 6300 3600 1C00 0600 6300 3E00 0000 0000 0000 ENDCHAR STARTCHAR char196 ENCODING 168 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6300 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char169 ENCODING 169 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6600 3C00 3E00 6300 6300 3000 1C00 0600 0300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char83 ENCODING 170 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3E00 6300 6300 3000 1C00 0600 0300 6300 6300 3E00 0600 0300 3E00 0000 ENDCHAR STARTCHAR char171 ENCODING 171 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6600 3C00 FF00 DB00 9900 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char90 ENCODING 172 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 FF00 C300 8600 0C00 1800 3000 6000 C100 C300 FF00 0000 0000 0000 0000 ENDCHAR STARTCHAR char173 ENCODING 173 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 FF80 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char174 ENCODING 174 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6600 3C00 FF00 C300 8600 0C00 1800 3000 6000 C100 C300 FF00 0000 0000 0000 0000 ENDCHAR STARTCHAR char90 ENCODING 175 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 C300 8600 0C00 7E00 3000 6000 C100 C300 FF00 0000 0000 0000 0000 ENDCHAR STARTCHAR char176 ENCODING 176 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1C00 3600 3600 1C00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char97 ENCODING 177 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3C00 0600 3E00 6600 6600 6600 3B00 0600 0300 0000 0000 ENDCHAR STARTCHAR char97 ENCODING 178 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0C00 1800 0E00 0000 0000 ENDCHAR STARTCHAR char108 ENCODING 179 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3800 1800 1E00 1C00 1800 3800 7800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char180 ENCODING 180 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1800 3000 6000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char108 ENCODING 181 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3980 1980 1B00 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char115 ENCODING 182 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0C00 0000 3E00 6300 3000 1C00 0600 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char171 ENCODING 183 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6600 3C00 1800 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char184 ENCODING 184 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0080 0100 0300 0600 0C00 1C00 3000 7F00 7700 0E00 1C00 1800 3000 6000 8000 0000 ENDCHAR STARTCHAR char185 ENCODING 185 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3600 1C00 3E00 6300 3000 1C00 0600 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char115 ENCODING 186 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 3000 1C00 0600 6300 3E00 0300 1E00 0000 0000 ENDCHAR STARTCHAR char187 ENCODING 187 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0180 0980 1B00 1800 7E00 1800 1800 1800 1800 1B00 0E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char122 ENCODING 188 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0C00 0000 7F00 6600 0C00 1800 3000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char189 ENCODING 189 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 3300 6600 CC00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char190 ENCODING 190 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6600 3C00 7F00 6600 0C00 1800 3000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char122 ENCODING 191 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0C00 0C00 0000 7F00 6600 0C00 1800 3000 6300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char82 ENCODING 192 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0600 0C00 7E00 3300 3300 3300 3E00 3600 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char193 ENCODING 193 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0300 0600 0000 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char194 ENCODING 194 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1C00 3600 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char195 ENCODING 195 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6300 3E00 0000 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char196 ENCODING 196 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6300 0000 0800 1C00 3600 6300 6300 7F00 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char76 ENCODING 197 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 7C00 3000 3000 3000 3000 3000 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char67 ENCODING 198 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0600 0C00 1E00 3300 6100 6000 6000 6000 6000 6100 3300 1E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char199 ENCODING 199 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 1E00 3300 6100 6000 6000 6000 6100 3300 1E00 0600 0300 3E00 0000 ENDCHAR STARTCHAR char200 ENCODING 200 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3300 1E00 1E00 3300 6100 6000 6000 6000 6000 6100 3300 1E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char201 ENCODING 201 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char202 ENCODING 202 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0C00 0600 0000 0000 ENDCHAR STARTCHAR char203 ENCODING 203 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6300 0000 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char204 ENCODING 204 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3300 1E00 7F00 3300 3100 3400 3C00 3400 3000 3100 3300 7F00 0000 0000 0000 0000 ENDCHAR STARTCHAR char205 ENCODING 205 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 0000 3C00 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char206 ENCODING 206 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3C00 6600 0000 3C00 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char207 ENCODING 207 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6600 3C00 7C00 3600 3300 3300 3300 3300 3300 3300 3600 7C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char208 ENCODING 208 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3C00 3600 3300 3300 7B00 7B00 3300 3300 3600 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char78 ENCODING 209 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 6300 7300 7B00 7F00 6F00 6700 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char210 ENCODING 210 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6600 3C00 6300 7300 7B00 7F00 6F00 6700 6300 6300 6300 6300 0000 0000 0000 0000 ENDCHAR STARTCHAR char211 ENCODING 211 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0600 0C00 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char212 ENCODING 212 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1C00 3600 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char213 ENCODING 213 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 3300 6600 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char214 ENCODING 214 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6300 0000 3E00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char215 ENCODING 215 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 6300 3600 1C00 0800 1C00 3600 6300 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char216 ENCODING 216 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6600 3C00 7E00 3300 3300 3300 3E00 3600 3300 3300 3300 7300 0000 0000 0000 0000 ENDCHAR STARTCHAR char217 ENCODING 217 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0800 1400 6B00 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char218 ENCODING 218 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0600 0C00 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char219 ENCODING 219 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1B00 3600 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char220 ENCODING 220 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 6300 0000 6300 6300 6300 6300 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char221 ENCODING 221 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 1800 3000 C300 C300 C300 6600 3C00 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char84 ENCODING 222 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 FF00 DB00 9900 1800 1800 1800 1800 1800 1800 3C00 0600 3C00 0000 0000 ENDCHAR STARTCHAR char223 ENCODING 223 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 1C00 3600 6300 6700 6E00 6C00 6600 6300 6B00 6E00 6000 4000 0000 0000 ENDCHAR STARTCHAR char224 ENCODING 224 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0C00 1800 6E00 3B00 3300 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char225 ENCODING 225 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0C00 1800 3000 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char226 ENCODING 226 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1C00 3600 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char227 ENCODING 227 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6600 3C00 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char228 ENCODING 228 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6600 0000 0000 3C00 0600 3E00 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char108 ENCODING 229 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0C00 1800 0000 3800 1800 1800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char99 ENCODING 230 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0C00 0000 3E00 6300 6000 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char231 ENCODING 231 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 6000 6000 6000 6300 3E00 0C00 0600 3C00 0000 ENDCHAR STARTCHAR char232 ENCODING 232 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 6600 3C00 3E00 6300 6000 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char233 ENCODING 233 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0600 0C00 1800 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char234 ENCODING 234 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 0000 3E00 6300 7F00 6000 6000 6300 3E00 1800 0E00 0000 0000 ENDCHAR STARTCHAR char235 ENCODING 235 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 0000 0000 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char236 ENCODING 236 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3300 1E00 3E00 6300 7F00 6000 6000 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char237 ENCODING 237 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0600 0C00 1800 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char238 ENCODING 238 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1800 3C00 6600 0000 3800 1800 1800 1800 1800 1800 3C00 0000 0000 0000 0000 ENDCHAR STARTCHAR char239 ENCODING 239 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 6000 6E00 3600 0600 1E00 3600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char100 ENCODING 240 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0E00 0600 0F00 0600 3E00 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char241 ENCODING 241 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0C00 0000 6E00 3300 3300 3300 3300 3300 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR char242 ENCODING 242 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3300 1E00 6E00 3300 3300 3300 3300 3300 3300 0000 0000 0000 0000 ENDCHAR STARTCHAR char243 ENCODING 243 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0600 0C00 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char244 ENCODING 244 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0800 1C00 3600 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char245 ENCODING 245 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3300 6600 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char246 ENCODING 246 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6300 0000 0000 3E00 6300 6300 6300 6300 6300 3E00 0000 0000 0000 0000 ENDCHAR STARTCHAR char247 ENCODING 247 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 0000 1800 1800 0000 7E00 0000 1800 1800 0000 0000 0000 0000 0000 ENDCHAR STARTCHAR char248 ENCODING 248 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0000 3300 1E00 6E00 3B00 3300 3000 3000 3000 7800 0000 0000 0000 0000 ENDCHAR STARTCHAR char249 ENCODING 249 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 1800 2400 2400 1800 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char250 ENCODING 250 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0C00 1800 3000 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char251 ENCODING 251 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 3300 6600 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char252 ENCODING 252 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 6600 0000 0000 6600 6600 6600 6600 6600 6600 3B00 0000 0000 0000 0000 ENDCHAR STARTCHAR char253 ENCODING 253 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0C00 1800 3000 0000 6300 6300 6300 6300 6300 6300 3F00 0300 0600 7C00 0000 ENDCHAR STARTCHAR char116 ENCODING 254 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0000 0800 1800 1800 7E00 1800 1800 1800 1800 1B00 0E00 0300 1E00 0000 0000 ENDCHAR STARTCHAR char255 ENCODING 255 SWIDTH 8640 0 DWIDTH 9 0 BBX 9 16 0 -4 BITMAP 0000 0C00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ENDCHAR ENDFONT alevt-v1.8.0/xio.c000066400000000000000000000643361345074102600140020ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #define XK_MISCELLANY #define XK_LATIN1 #include #include #include "vt.h" #include "misc.h" #include "dllist.h" #include "xio.h" #include "fdset.h" #include "lang.h" #include "icon.xbm" #include "font.h" int bell = -1; #define WW (W*CW) /* pixel width of window */ #define WH (H*CH) /* pixel hegiht of window */ #define NO_SEL 999 /* sel_y1 value if no selection */ #define SEL_MIN_TIME 500 /* anything shorter is a click */ static struct dl_head dpys[1]; /* list of all displays */ static void xio_timer(void *data, int fd); static void handle_event(struct xio *xio, int fd); static int timer_init(int argc, char **argv) { int p[2], timer_pid, i; if (pipe(p) == -1) return -1; signal(SIGPIPE, SIG_DFL); // some 'shells' (KDE) set this to SIG_IGN :( timer_pid = fork(); if (timer_pid == -1) return -1; if (timer_pid > 0) { fdset_add_fd(fds, p[0], xio_timer, 0); close(p[1]); return 0; } close(p[0]); for (i = 0; i < 32; ++i) if (p[1] != i) close(i); memcpy(argv[0], "Timer", 6); for (;;) { usleep(300000); write(p[1], "*", 1); } } static int local_init(int argc, char **argv) { static int inited = 0; if (inited) return 0; if (timer_init(argc, argv) == -1) return -1; dl_init(dpys); inited = 1; return 0; } static int get_colors(struct xio *xio) { int i; XColor c; static short rgb[][3] = { { 0x0000,0x0000,0x0000 }, { 0xffff,0x0000,0x0000 }, { 0x0000,0xffff,0x0000 }, { 0xffff,0xffff,0x0000 }, { 0x0000,0x0000,0xffff }, { 0xffff,0x0000,0xffff }, { 0x0000,0xffff,0xffff }, { 0xffff,0xffff,0xffff }, { 0x7fff,0x7fff,0x7fff }, { 0x7fff,0x0000,0x0000 }, { 0x0000,0x7fff,0x0000 }, { 0x7fff,0x7fff,0x0000 }, { 0x0000,0x0000,0x7fff }, { 0x7fff,0x0000,0x7fff }, { 0x0000,0x7fff,0x7fff }, { 0x3fff,0x3fff,0x3fff }, }; for (i = 0; i < 16; ++i) { c.red = rgb[i][0]; c.green = rgb[i][1]; c.blue = rgb[i][2]; if (XAllocColor(xio->dpy, xio->cmap, &c) == 0) return -1; xio->color[i] = c.pixel; } return 0; } static int get_fonts(struct xio *xio) { GC gc; int i; unsigned char *font_bits; switch(latin1) { case LATIN1: font_bits=font1_bits; break; case LATIN2: font_bits=font2_bits; break; case KOI8: font_bits=font3_bits; break; case GREEK: font_bits=font4_bits; break; default: font_bits=font1_bits; break; } xio->font[0] = XCreateBitmapFromData(xio->dpy, xio->root, font_bits, font_width, font_height); xio->font[1] = XCreatePixmap(xio->dpy, xio->root, font_width, font_height*2, 1); gc = XCreateGC(xio->dpy, xio->font[0], 0, 0); for (i = 0; i < font_height; ++i) { XCopyArea(xio->dpy, xio->font[0], xio->font[1], gc, 0, i, font_width, 1, 0, i*2); XCopyArea(xio->dpy, xio->font[0], xio->font[1], gc, 0, i, font_width, 1, 0, i*2+1); } XFreeGC(xio->dpy, gc); return 0; } static void xlib_conn_watch(Display *dpy, void *fds, int fd, int open_flag, void *data) { if (open_flag) fdset_add_fd(fds, fd, XProcessInternalConnection, dpy); else fdset_del_fd(fds, fd); } struct xio * xio_open_dpy(char *dpy, int argc, char **argv) { XClassHint classhint[1]; struct xio *xio; if (local_init(argc, argv) == -1) goto fail1; if (not(xio = malloc(sizeof(*xio)))) goto fail1; if (not(xio->dpy = XOpenDisplay(dpy))) goto fail2; xio->fd = ConnectionNumber(xio->dpy); xio->argc = argc; xio->argv = argv; dl_init(xio->windows); xio->screen = DefaultScreen(xio->dpy); xio->depth = DefaultDepth(xio->dpy, xio->screen); xio->width = DisplayWidth(xio->dpy, xio->screen); xio->height = DisplayHeight(xio->dpy, xio->screen); xio->root = DefaultRootWindow(xio->dpy); xio->cmap = DefaultColormap(xio->dpy, xio->screen); xio->xa_del_win = XInternAtom(xio->dpy, "WM_DELETE_WINDOW", False); xio->xa_targets = XInternAtom(xio->dpy, "TARGETS", False); xio->xa_timestamp = XInternAtom(xio->dpy, "TIMESTAMP", False); xio->xa_multiple = XInternAtom(xio->dpy, "MULTIPLE", False); xio->xa_text = XInternAtom(xio->dpy, "TEXT", False); if (get_colors(xio) == -1) goto fail3; if (get_fonts(xio) == -1) goto fail3; if (fdset_add_fd(fds, xio->fd, handle_event, xio) == -1) goto fail3; XAddConnectionWatch(xio->dpy, PTR xlib_conn_watch, PTR fds); xio->icon = XCreateBitmapFromData(xio->dpy, xio->root, icon_bits, icon_width, icon_height); xio->group_leader = XCreateSimpleWindow(xio->dpy, xio->root, 0, 0, 1, 1, 0, 0, 0); XSetCommand(xio->dpy, xio->group_leader, xio->argv, xio->argc); classhint->res_name = "VTLeader"; classhint->res_class = "AleVT"; XSetClassHint(xio->dpy, xio->group_leader, classhint); dl_insert_first(dpys, xio->node); return xio; fail4: fdset_del_fd(fds, xio->fd); fail3: XCloseDisplay(xio->dpy); fail2: free(xio); fail1: return 0; } static void set_user_geometry(struct xio_win *xw, char *geom, XSizeHints *sh, int bwidth) { static int gravs[] = { NorthWestGravity, NorthEastGravity, SouthWestGravity, SouthEastGravity }; int f, g = 0; f = XParseGeometry(geom, &sh->x, &sh->y, &sh->width, &sh->height); if (f & WidthValue) sh->width = sh->base_width + sh->width * sh->width_inc; if (f & HeightValue) sh->height = sh->base_height + sh->height * sh->height_inc; if (f & XNegative) g+=1, sh->x = xw->xio->width + sh->x - sh->width - bwidth; if (f & YNegative) g+=2, sh->y = xw->xio->height + sh->y - sh->height - bwidth; sh->width = bound(sh->min_width, sh->width, sh->max_width); sh->height = bound(sh->min_height, sh->height, sh->max_height); if (f & (WidthValue | HeightValue)) sh->flags |= USSize; if (f & (XValue | YValue)) sh->flags |= USPosition | PWinGravity; sh->win_gravity = gravs[g]; } struct xio_win * xio_open_win(struct xio *xio, char *geom) { struct xio_win *xw; XSetWindowAttributes attr; XGCValues gcval; XSizeHints sizehint[1]; XClassHint classhint[1]; XWMHints wmhint[1]; if (not(xw = malloc(sizeof(*xw)))) goto fail1; xw->xio = xio; sizehint->flags = PSize | PBaseSize | PMinSize | PMaxSize | PResizeInc; sizehint->x = sizehint->y = 0; sizehint->width_inc = CW; sizehint->height_inc = CH; sizehint->base_width = 0; sizehint->base_height = 0; sizehint->min_width = 11*CW; sizehint->min_height = 1*CH; sizehint->max_width = sizehint->width = WW + CW; sizehint->max_height = sizehint->height = WH; set_user_geometry(xw, geom, sizehint, 1); attr.background_pixel = xio->color[0]; attr.event_mask = KeyPressMask | ButtonPressMask|ButtonReleaseMask|Button1MotionMask | ExposureMask; xw->win = XCreateWindow(xio->dpy, xio->root, sizehint->x, sizehint->y, sizehint->width, sizehint->height, 1, CopyFromParent, CopyFromParent, CopyFromParent, CWBackPixel|CWEventMask, &attr); classhint->res_name = "VTPage"; classhint->res_class = "AleVT"; wmhint->flags = InputHint | StateHint | WindowGroupHint | IconPixmapHint; wmhint->input = True; wmhint->initial_state = NormalState; //IconicState; wmhint->window_group = xio->group_leader; wmhint->icon_pixmap = xio->icon; XSetWMProperties(xio->dpy, xw->win, 0,0, 0,0, sizehint, wmhint, classhint); XSetWMProtocols(xio->dpy, xw->win, &xio->xa_del_win, 1); xw->title[0] = 0; xio_title(xw, "AleVT"); // will be reset pretty soon /* XStoreName(xio->dpy, xw->win, "AleVT " VERSION); XSetIconName(xio->dpy, xw->win, "AleVT"); */ gcval.graphics_exposures = False; xw->gc = XCreateGC(xio->dpy, xw->win, GCGraphicsExposures, &gcval); xw->tstamp = CurrentTime; xw->fg = xw->bg = -1; /* unknown colors */ xw->curs_x = xw->curs_y = 999; // no cursor xw->sel_y1 = NO_SEL; /* no selection area */ xw->sel_start_t = 0; /* no selection-drag active */ xw->sel_set_t = 0; /* not selection owner */ xw->sel_pixmap = 0; /* no selection pixmap yet */ xio_clear_win(xw); xw->blink_on = xw->reveal = 0; xw->handler = 0; XMapWindow(xio->dpy, xw->win); dl_insert_first(xio->windows, xw->node); return xw; fail2: free(xw); fail1: return 0; } void xio_close_win(struct xio_win *xw, int dpy_too) { struct xio *xio = xw->xio; XDestroyWindow(xio->dpy, xw->win); dl_remove(xw->node); free(xw); if (dpy_too && dl_empty(xio->windows)) xio_close_dpy(xio); } void xio_close_dpy(struct xio *xio) { while (not dl_empty(xio->windows)) xio_close_win((struct xio_win *)xio->windows->first, 0); XDestroyWindow(xio->dpy, xio->group_leader); XRemoveConnectionWatch(xio->dpy, PTR xlib_conn_watch, PTR fds); fdset_del_fd(fds, xio->fd); dl_remove(xio->node); free(xio); } void xio_set_handler(struct xio_win *xw, void *handler, void *data) { xw->handler = handler; xw->data = data; } void xio_title(struct xio_win *xw, char *title) { char buf[sizeof(xw->title) + 32]; if (strlen(title) >= sizeof(xw->title)) return; //TODO: trimm... if (strcmp(xw->title, title) == 0) return; strcpy(xw->title, title); sprintf(buf, "AleVT " VERSION " %s", xw->title); XStoreName(xw->xio->dpy, xw->win, buf); XSetIconName(xw->xio->dpy, xw->win, xw->title); } void xio_clear_win(struct xio_win *xw) { memset(xw->ch, ' ', sizeof(xw->ch)); xw->dheight = xw->blink = xw->concealed = 0; xw->hidden = xw->lhidden = 0; xw->modified = ALL_LINES; } void xio_put_line(struct xio_win *xw, int y, u8 *data) { u8 *p = xw->ch + y*W; u8 *ep = p + W; lbits yb = 1 << y; lbits x = xw->dheight; if (y < 0 || y >= H) return; if (memcmp(data, p, ep - p) == 0) return; xw->modified |= yb; xw->blink &= ~yb; xw->dheight &= ~yb; xw->concealed &= ~yb; while (p < ep) switch (*p++ = *data++) { case 0x08: xw->blink |= yb; break; case 0x0d: if (y < H-1) xw->dheight |= yb; break; case 0x18: xw->concealed |= yb; break; } if ((xw->dheight ^ x) & yb) // dheight has changed, recalc hidden { xw->hidden &= yb*2 - 1; for (; yb & ALL_LINES/2; yb *= 2) if (~xw->hidden & xw->dheight & yb) xw->hidden |= yb*2; } } void xio_put_str(struct xio_win *xw, int y, u8 *str) { u8 buf[W]; int l; l = strlen(str); if (l < W) { memcpy(buf, str, l); memset(buf + l, ' ', W - l); } else memcpy(buf, str, W); xio_put_line(xw, y, buf); } static void dirty(struct xio_win *xw, int y1, int y2) // mark [y1,y2[ dirty { if (y1 >= 0 && y1 < H && y1 < y2) { if (y2 > H) y2 = H; if (xw->hidden & (1 << y1)) y1--; while (y1 < y2) xw->modified |= 1 << y1++; } } int xio_get_line(struct xio_win *xw, int y, u8 *data) { if (y < 0 || y >= H) return -1; if (xw->hidden & (1 << y)) y--; memcpy(data, xw->ch + y*W, 40); return 0; } void xio_set_cursor(struct xio_win *xw, int x, int y) { if (xw->curs_y >= 0 && xw->curs_y < H) dirty(xw, xw->curs_y, xw->curs_y + 1); if (x >= 0 && x < W && y >= 0 && y < H) dirty(xw, y, y + 1); else x = y = 999; xw->curs_x = x; xw->curs_y = y; } static inline void draw_char(struct xio_win *xw, Window win, int fg, int bg, int c, int dbl, int x, int y, int ry) { struct xio *xio = xw->xio; if (fg != xw->fg) XSetForeground(xio->dpy, xw->gc, xio->color[xw->fg = fg]); if (bg != xw->bg) XSetBackground(xio->dpy, xw->gc, xio->color[xw->bg = bg]); if (dbl) { XCopyPlane(xio->dpy, xio->font[1], win, xw->gc, c%32*CW, c/32*CH*2, CW, CH*2, x*CW, y*CH, 1); } else { XCopyPlane(xio->dpy, xio->font[0], win, xw->gc, c%32*CW, c/32*CH, CW, CH, x*CW, y*CH, 1); if (xw->dheight & (1<dpy, xio->font[0], win, xw->gc, ' '%32*CW, ' '/32*CH, CW, CH, x*CW, y*CH+CH, 1); } } static void draw_cursor(struct xio_win *xw, int x, int y, int dbl) { struct xio *xio = xw->xio; // if (xw->fg == xw->bg) // XSetForeground(xio->dpy, xw->gc, xio->color[xw->fg ^= 8]); if (xw->blink_on) XSetForeground(xio->dpy, xw->gc, xio->color[xw->fg = xw->bg ^ 8]); XDrawRectangle(xio->dpy, xw->win, xw->gc, x * CW, y * CH, CW-1, (dbl ? 2*CH : CH)-1); } void xio_update_win(struct xio_win *xw) { u8 *p = xw->ch; lbits yb, redraw; int x, y, c; if (xw->modified == 0) return; redraw = xw->modified; // all modified lines redraw |= xw->lhidden; // all previously hidden lines redraw &= ~xw->hidden; xw->lhidden = xw->hidden; xw->modified = 0; if (redraw == 0) return; for (yb = 1, y = 0; y < H; ++y, yb *= 2) if (redraw & yb) { int fg = 7, bg = 0, _fg, _bg; int dbl = 0, blk = 0, con = 0, gfx = 0, sep = 0, hld = 0; int last_ch = ' '; for (x = 0; x < W; ++x) { switch (c = *p++) { case 0x00 ... 0x07: /* alpha + foreground color */ fg = c & 7; gfx = 0; con = 0; goto ctrl; case 0x08: /* flash */ blk = not xw->blink_on; goto ctrl; case 0x09: /* steady */ blk = 0; goto ctrl; case 0x0a: /* end box */ case 0x0b: /* start box */ goto ctrl; case 0x0c: /* normal height */ dbl = 0; goto ctrl; case 0x0d: /* double height */ dbl = y < H-1; goto ctrl; case 0x10 ... 0x17: /* graphics + foreground color */ fg = c & 7; gfx = 1; con = 0; goto ctrl; case 0x18: /* conceal display */ con = not xw->reveal; goto ctrl; case 0x19: /* contiguous graphics */ sep = 0; goto ctrl; case 0x1a: /* separate graphics */ sep = 1; goto ctrl; case 0x1c: /* black background */ bg = 0; goto ctrl; case 0x1d: /* new background */ bg = fg; goto ctrl; case 0x1e: /* hold graphics */ hld = 1; goto ctrl; case 0x1f: /* release graphics */ hld = 0; goto ctrl; case 0x0e: /* SO (reserved, double width) */ case 0x0f: /* SI (reserved, double size) */ c= ' '; break; case 0x1b: /* ESC (reserved) */ c = ' '; break; ctrl: c = ' '; if (hld && gfx) c = last_ch; break; case 0x80 ... 0x9f: /* these aren't used */ c = BAD_CHAR; break; default: /* mapped to selected font */ break; } if (gfx && (c & 0xa0) == 0x20) { last_ch = c; c += (c & 0x40) ? 32 : -32; } _fg = fg; _bg = bg; if (blk) _fg |= 8; if (y >= xw->sel_y1 && y < xw->sel_y2 && x >= xw->sel_x1 && x < xw->sel_x2) _bg |= 8; if (con) _fg = _bg; draw_char(xw, xw->win, _fg, _bg, c, dbl, x, y, y); if (y == xw->curs_y && x == xw->curs_x) draw_cursor(xw, xw->curs_x, xw->curs_y, dbl); if (xw->sel_pixmap && (_bg & 8)) draw_char(xw, xw->sel_pixmap, con ? bg : fg, bg, c, dbl, x - xw->sel_x1, y - xw->sel_y1, y); } } else p += 40; } static void for_all_windows(void (*func)(struct xio_win *xw), struct xio_win *except) { struct xio *xio, *vtn; struct xio_win *xw, *vwn; for (xio = PTR dpys->first; vtn = PTR xio->node->next; xio = vtn) for (xw = PTR xio->windows->first; vwn = PTR xw->node->next; xw = vwn) if (xw != except) func(xw); } int xio_set_concealed(struct xio_win *xw, int on) { on = !!on; if (xw->reveal == on) return on; xw->reveal = on; xw->modified |= xw->concealed; return !on; } //////////////////// // selection support //////////////////// static void sel_set(struct xio_win *xw, int x1, int y1, int x2, int y2) { int t; x1 = bound(0, x1, W-1); y1 = bound(0, y1, H-1); x2 = bound(0, x2, W-1); y2 = bound(0, y2, H-1); if (x1 > x2) t = x1, x1 = x2, x2 = t; if (y1 > y2) t = y1, y1 = y2, y2 = t; dirty(xw, xw->sel_y1, xw->sel_y2); if (xw->hidden & (1 << y1)) y1--; if (xw->hidden & (2 << y2)) y2++; xw->sel_x1 = x1; xw->sel_y1 = y1; xw->sel_x2 = x2 + 1; xw->sel_y2 = y2 + 1; dirty(xw, xw->sel_y1, xw->sel_y2); } static void sel_abort(struct xio_win *xw) { if (xw->sel_set_t) XSetSelectionOwner(xw->xio->dpy, XA_PRIMARY, None, xw->sel_set_t); if (xw->sel_y1 != NO_SEL) dirty(xw, xw->sel_y1, xw->sel_y2); xw->sel_y1 = NO_SEL; xw->sel_set_t = 0; xw->sel_start_t = 0; } static void sel_start(struct xio_win *xw, int x, int y, Time t) { sel_abort(xw); xw->sel_start_x = x; xw->sel_start_y = y; xw->sel_start_t = t; } static void sel_move(struct xio_win *xw, int x, int y, Time t) { if (xw->sel_start_t == 0) return; if (xw->sel_y1 == NO_SEL) if (t - xw->sel_start_t < SEL_MIN_TIME) if (x == xw->sel_start_x) if (y == xw->sel_start_y) return; sel_set(xw, xw->sel_start_x, xw->sel_start_y, x, y); } static int sel_end(struct xio_win *xw, int x, int y, Time t) { sel_move(xw, x, y, t); xw->sel_start_t = 0; if (xw->sel_y1 == NO_SEL) return 0; for_all_windows(sel_abort, xw); XSetSelectionOwner(xw->xio->dpy, XA_PRIMARY, xw->win, t); if (XGetSelectionOwner(xw->xio->dpy, XA_PRIMARY) == xw->win) xw->sel_set_t = t; else sel_abort(xw); return 1; } static int sel_convert2ascii(struct xio_win *xw, u8 *buf) { u8 *d = buf; int x, y, nl = 0; for (y = xw->sel_y1; y < xw->sel_y2; y++) { u8 *s = xw->ch + y * W; int gfx = 0, con = 0; if (~xw->hidden & (1 << y)) { for (x = 0; x < xw->sel_x2; ++x) { int ch, c = ' '; switch (ch = *s++) { case 0x00 ... 0x07: gfx = con = 0; break; case 0x10 ... 0x17: gfx = 1, con = 0; break; case 0x18: con = not xw->reveal; break; case 0xa0 ... 0xff: case 0x20 ... 0x7f: if (not con) if (gfx && ch != ' ' && (ch & 0xa0) == 0x20) c = '#'; else if (ch == 0x7f) c = '*'; else c = ch; break; } if (x >= xw->sel_x1) { if (nl) *d++ = '\n', nl = 0; *d++ = c; } } nl = 1; } } *d = 0; // not necessary return d - buf; } static Pixmap sel_convert2pixmap(struct xio_win *xw) { struct xio *xio = xw->xio; Pixmap pm; if (xw->sel_y1 == NO_SEL) return None; pm = XCreatePixmap(xio->dpy, xio->root, (xw->sel_x2 - xw->sel_x1) * CW, (xw->sel_y2 - xw->sel_y1) * CH, xio->depth); xw->sel_pixmap = pm; dirty(xw, xw->sel_y1, xw->sel_y2); xio_update_win(xw); xw->sel_pixmap = 0; return pm; } static int sel_do_conv(struct xio_win *xw, Window w, Atom type, Atom prop) { struct xio *xio = xw->xio; if (type == xio->xa_targets) { u32 atoms[6]; atoms[0] = XA_STRING; atoms[1] = xio->xa_text; atoms[2] = XA_PIXMAP; atoms[3] = XA_COLORMAP; atoms[4] = xio->xa_multiple; atoms[5] = xio->xa_timestamp; XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR atoms, NELEM(atoms)); } else if (type == xio->xa_timestamp) { u32 t = xw->sel_set_t; XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR &t, 1); } else if (type == XA_COLORMAP) { u32 t = xio->cmap; XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR &t, 1); } else if (type == XA_STRING || type == xio->xa_text) { u8 buf[H * (W+1)]; int len; len = sel_convert2ascii(xw, buf); XChangeProperty(xio->dpy, w, prop, type, 8, PropModeReplace, buf, len); //prop = XA_STRING; } else if (type == XA_PIXMAP || type == XA_DRAWABLE) { Pixmap pm; pm = sel_convert2pixmap(xw); XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR &pm, 1); //prop = XA_PIXMAP; } else if (type == xio->xa_multiple) { u32 *atoms, ty, fo, i; unsigned long n, b; if (prop != None) { if (Success == XGetWindowProperty(xio->dpy, w, prop, 0, 1024, 0, AnyPropertyType, PTR &ty, PTR &fo, &n, &b, PTR &atoms)) { if (fo == 32 && n%2 == 0) { for (i = 0; i < n; i += 2) if (sel_do_conv(xw, w, atoms[i], atoms[i+1]) == None) atoms[i] = None; } XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR atoms, n); XFree(atoms); } } } else return None; return prop; } static void sel_send(struct xio_win *xw, XSelectionRequestEvent *req) { XSelectionEvent ev[1]; if (req->property == None) req->property = req->target; // old client ev->type = SelectionNotify; ev->requestor = req->requestor; ev->selection = req->selection; ev->target = req->target; ev->property = sel_do_conv(xw, req->requestor, req->target, req->property); ev->time = req->time; XSendEvent(xw->xio->dpy, req->requestor, False, 0, PTR ev); } static void sel_retrieve(struct xio_win *xw, Window w, Atom prop, int del) { u8 *data; u32 ty, fo; unsigned long n, b; struct xio *xio = xw->xio; if (prop == None) return; if (Success == XGetWindowProperty(xio->dpy, w, prop, 0, 1024, del, AnyPropertyType, PTR &ty, PTR &fo, &n, &b, PTR &data)) { if (fo == 8 && n != 0) { struct vt_event vtev[1]; vtev->resource = xw; vtev->type = EV_SELECTION; vtev->i1 = n; vtev->p1 = data; xw->handler(xw->data, vtev); } XFree(data); } } void xio_cancel_selection(struct xio_win *xw) { /* if (xw->sel_set_t) XSetSelectionOwner(xw->xio->dpy, XA_PRIMARY, None, xw->sel_set_t); */ sel_abort(xw); } void xio_query_selection(struct xio_win *xw) { struct xio *xio = xw->xio; if (XGetSelectionOwner(xio->dpy, XA_PRIMARY) == None) sel_retrieve(xw, xio->root, XA_CUT_BUFFER0, False); else { XDeleteProperty(xio->dpy, xw->win, XA_STRING); XConvertSelection(xio->dpy, XA_PRIMARY, XA_STRING, XA_STRING, xw->win, xw->tstamp); } } void xio_set_selection(struct xio_win *xw, int x1, int y1, int x2, int y2) { sel_start(xw, x1, y1, xw->tstamp - SEL_MIN_TIME); sel_end(xw, x2, y2, xw->tstamp); } ///////////////// // event handling ///////////////// static void handle_event(struct xio *xio, int fd) { struct xio_win *xw; struct vt_event vtev[1]; XEvent ev[1]; XNextEvent(xio->dpy, ev); for (xw = PTR xio->windows->first; xw->node->next; xw = PTR xw->node->next) if (xw->win == ev->xany.window) break; if (xw->node->next == 0) return; vtev->resource = xw; switch(ev->type) { case Expose: { int y1 = ev->xexpose.y / CH; int y2 = (ev->xexpose.y + ev->xexpose.height + CH-1) / CH; dirty(xw, y1, y2); break; } case ClientMessage: { vtev->type = EV_CLOSE; if (ev->xclient.format == 32) if ((Atom)ev->xclient.data.l[0] == xio->xa_del_win) xw->handler(xw->data, vtev); break; } case KeyPress: { unsigned char ch; KeySym k; xw->tstamp = ev->xkey.time; vtev->type = EV_KEY; vtev->i1 = 0; vtev->i2 = (ev->xkey.state & ShiftMask) != 0; if (XLookupString(&ev->xkey, &ch, 1, &k, 0)) vtev->i1 = ch; else switch (k) { case XK_Left: vtev->i1 = KEY_LEFT; break; case XK_Right: vtev->i1 = KEY_RIGHT; break; case XK_Up: vtev->i1 = KEY_UP; break; case XK_Down: vtev->i1 = KEY_DOWN; break; case XK_Prior: vtev->i1 = KEY_PUP; break; case XK_Next: vtev->i1 = KEY_PDOWN; break; case XK_Delete: vtev->i1 = KEY_DEL; break; case XK_Insert: vtev->i1 = KEY_INS; break; case XK_F1: vtev->i1 = KEY_F(1); break; case XK_F2: vtev->i1 = KEY_F(2); break; case XK_F3: vtev->i1 = KEY_F(3); break; case XK_F4: vtev->i1 = KEY_F(4); break; case XK_F5: vtev->i1 = KEY_F(5); break; case XK_F6: vtev->i1 = KEY_F(6); break; case XK_F7: vtev->i1 = KEY_F(7); break; case XK_F8: vtev->i1 = KEY_F(8); break; case XK_F9: vtev->i1 = KEY_F(9); break; case XK_F10: vtev->i1 = KEY_F(10); break; case XK_F11: vtev->i1 = KEY_F(11); break; case XK_F12: vtev->i1 = KEY_F(12); break; } if (vtev->i1) xw->handler(xw->data, vtev); break; } case ButtonPress: { xw->tstamp = ev->xkey.time; ev->xbutton.x /= CW; ev->xbutton.y /= CH; if (ev->xbutton.button == Button1) sel_start(xw, ev->xbutton.x, ev->xbutton.y, ev->xbutton.time); break; } case MotionNotify: { xw->tstamp = ev->xkey.time; ev->xmotion.x /= CW; ev->xmotion.y /= CH; if (ev->xmotion.state & Button1Mask) sel_move(xw, ev->xmotion.x, ev->xmotion.y, ev->xmotion.time); break; } case ButtonRelease: { xw->tstamp = ev->xkey.time; ev->xbutton.x /= CW; ev->xbutton.y /= CH; if (ev->xbutton.button == Button1) if (sel_end(xw, ev->xbutton.x, ev->xbutton.y, ev->xbutton.time)) break; vtev->type = EV_MOUSE; vtev->i1 = ev->xbutton.button; vtev->i2 = (ev->xbutton.state & ShiftMask) != 0; vtev->i3 = ev->xbutton.x; vtev->i4 = ev->xbutton.y; if (vtev->i3 >= 0 && vtev->i3 < W && vtev->i4 >= 0 && vtev->i4 < H) xw->handler(xw->data, vtev); break; } case SelectionClear: { // may be our own Owner=None due to sel_start if (xw->sel_set_t && ev->xselectionclear.time >= xw->sel_set_t) { xw->sel_set_t = 0; // no need to reset owner sel_abort(xw); } break; } case SelectionRequest: { sel_send(xw, &ev->xselectionrequest); break; } case SelectionNotify: { sel_retrieve(xw, ev->xselection.requestor, ev->xselection.property, True); break; } default: break; } } static void switch_blink_state(struct xio_win *xw) { xw->blink_on = !xw->blink_on; xw->modified |= xw->blink; dirty(xw, xw->curs_y, xw->curs_y + 1); } static void send_timer_event(struct xio_win *xw) { struct vt_event vtev[1]; vtev->type = EV_TIMER; xw->handler(xw->data, vtev); } static void xio_timer(void *data, int fd) { char buf[64]; read(fd, buf, sizeof(buf)); for_all_windows(switch_blink_state, 0); for_all_windows(send_timer_event, 0); } void xio_event_loop(void) { struct xio *xio, *vtn; int f; while (not dl_empty(dpys)) { do { for_all_windows(xio_update_win, 0); f = 0; for (xio = PTR dpys->first; vtn = PTR xio->node->next; xio = vtn) while (XPending(xio->dpy)) { handle_event(xio, xio->fd); f++; } } while (f); fdset_select(fds, -1); /* if (fdset_select(fds, 500) == 0) for_all_windows(switch_blink_state, 0); */ } } void xio_bell(struct xio_win *xw) { if (bell) XBell(xw->xio->dpy, 0); } alevt-v1.8.0/xio.h000066400000000000000000000060221345074102600137730ustar00rootroot00000000000000#ifndef VTXIO_H #define VTXIO_H #include #include "vt.h" #include "dllist.h" typedef u32 lbits; #define ALL_LINES ((1ul << H) - 1) extern int bell; /* one xio per display */ struct xio { struct dl_node node[1]; int argc; char **argv; Display *dpy; /* display connection */ int fd; /* the displays file descriptor */ Atom xa_del_win; /* WM_DELETE_WINDOW atom */ Atom xa_targets; /* TARGETS atom (selection) */ Atom xa_timestamp; /* TIMESTAMP atom (selection) */ Atom xa_text; /* TEXT atom (selection) */ Atom xa_multiple; /* MULTIPLE atom (selection) */ Window group_leader; /* unmapped window */ int screen; /* DefaultScreen */ int width, height; /* DisplayWidth/Height */ int depth; /* DefaultDepth */ Window root; /* DefaultRoot */ Colormap cmap; int color[16]; /* 8 normal, 8 dim intensity */ Pixmap font[2]; /* normal, dbl-height */ Pixmap icon; /* icon pixmap */ struct dl_head windows[1]; /* all windows on this display */ }; /* one vt_win per window */ struct xio_win { struct dl_node node[1]; struct xio *xio; /* display */ Window win; /* the drawing window */ Time tstamp; /* timestamp of last user event */ GC gc; /* it's graphics context */ u8 ch[H*W]; /* the page contents */ lbits modified, hidden, lhidden; /* states for each line */ lbits dheight, blink, concealed; /* attributes for each line */ int fg, bg; /* current foreground/background */ int blink_on; /* blinking on */ int reveal; /* reveal concealed text */ void (*handler)(void *data, struct vt_event *ev); /* event-handler */ void *data; /* data for the event-handler */ int curs_x, curs_y; /* cursor position */ u8 title[32]; /* the user title */ // selection support int sel_start_x, sel_start_y; Time sel_start_t; Time sel_set_t; /* time we got selection owner */ int sel_x1, sel_y1, sel_x2, sel_y2; /* selected area */ Pixmap sel_pixmap; /* for pixmap-selection requests */ }; struct xio *xio_open_dpy(char *dpy, int argc, char **argv); struct xio_win *xio_open_win(struct xio *xio, char *geom); void xio_close_win(struct xio_win *xw, int dpy_too); void xio_close_dpy(struct xio *xio); void xio_set_handler(struct xio_win *xw, void *handler, void *data); void xio_clear_win(struct xio_win *xw); void xio_put_line(struct xio_win *xw, int line, u8 *data); void xio_put_str(struct xio_win *xw, int line, u8 *c_str); int xio_get_line(struct xio_win *xw, int line, u8 *data); int xio_set_concealed(struct xio_win *xw, int on); void xio_update_win(struct xio_win *xw); void xio_fd_handler(int fd, void *handler, void *data); void xio_bell(struct xio_win *xw); void xio_cancel_selection(struct xio_win *xw); void xio_query_selection(struct xio_win *xw); void xio_set_selection(struct xio_win *xw, int x1, int y1, int x2, int y2); void xio_set_cursor(struct xio_win *xw, int x, int y); void xio_event_loop(void); void xio_title(struct xio_win *xw, char *title); #endif