Jomic User Guide

$Id: user-guide.xml 2194 2011-04-24 12:41:05Z roskakori $

Table of Contents

1. Setting Things Up
Mac OS X
Web Start
Generic Installer
2. Quick Start
3. Reference
The File Menu
Open Recent
Open Next
Open Previous
Export Image
Export all images
The View Menu
Actual Size
Zoom To Fit
Zoom to fit height
Zoom to fit width
Full screen
Rotate left
Rotate right
Show toolbar
Show page thumbs
Show two pages
Read from right to left
Show Information
Set blur options
Set background color
The Go Menu
To Page...
The Help Menu
System information
Mailing list
Report bug
Request feature
Contact author
Keyboard Shortcuts
Mouse Navigation
Advanced Settings
4. Contact
A. Thanks
B. GNU Free Documentation License
Applicability and definitions
Verbatim copying
Copying in quantity
Combining documents
Collections of documents
Aggregation with independent works
Future revisions of this license
Addendum: How to use this License for your documents
C. Revision History

List of Figures

1.1. Web Start application launcher.
3.1. Dialog to open a comic.
3.2. Progress during opening a comic.
3.3. Open a comic inside an archive.
3.4. Dialog to specify what to convert.
3.5. Progress of a conversion.
3.6. Dialog to go to a certain page.
3.7. Searching for a keyword in the help viewer.

List of Tables

3.1. Additional keyboard shortcuts
3.2. Location of
3.3. Possibly useful settings in

List of Examples

3.1. Sample
3.2. Sample

Jomic is a viewer for comic books stored in CBZ, CBR, and PDF files. Features include a two page mode, caching and support for several image formats (PNG, JFIF/JPEG, TIFF, and GIF). It is Open Source software distributed under the GNU General Public License.

To find out what is new in this version, see the revision history. For updates and support, visit the Jomic homepage at

This section describes how to install and run Jomic. There are several flavors of the application, with different steps required to set it up. Essentially, there is a version for Mac OS X offering unique features such as Finder integration, a Webstart release that can be installed and launched by simply clicking a link and finally a traditional installer with launcher scripts for Unix and Windows.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 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 General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

To start Jomic from the Finder, simply double-click it in the Finder, or drop a comic on the icon.

To start Jomic in the terminal, use the open command as usual, for example: open -a ~/Applications/Jomic stuff/comics/example.cbz. If you are unfamiliar with open, type man open to learn more about it.

If you want to use all options Jomic's command line interface supports, things take some effort. The open command does not allow to pass options to the application. To work around this, the Jomic application bundle includes a little Python script to launch it from the command line using the Java ressources of the application bundle. As the script is located inside the bundle, its location depends on the place where Jomic is installed. Assuming Jomic is located in ~/Applications/, you can run the script using for example: python ~/Applications/ --continue.


Although you can also use the installer, the single JAR or Web Start to start Jomic under Mac OS X, there is not much point to it. They do not support many convenient features such as dragging and dropping comics on the icon, or assigning icons to CBZ and CBR files.

The easiest way to run Jomic on platforms other than Mac OS X is to use Webstart, a standard way to launch applications by simply clicking a link on a home page.

Open in your web browser and click on "Start Jomic!". A window should pop up and inform about the download progress. This will take a while. When done, Jomic automatically launches.

  • Java 1.4 or newer, available from

  • Optionally Java Advanced Imaging, available from The installer includes all files essential for JAI, but lacks platform dependent native libraries. This will reduce performance for some image related operations, most notably reading of TIFF images.

    In case you need want the best performance, you need to download and install JAI optimized for your platform. In case you do that after having installed the generic JAI package included with Jomic, make sure to remove all lib/jai_*.jar files from the Jomic installation directory. Otherwise, Jomic will keep disabling the native libraries.

  • Optionally Java Advanced Imaging-Image I/O Tools, (again) available from You only need this if you want to view additional image formats such as JPEG 2000 or BMP.

This chapter gives a quick overview of the things you can do with Jomic.

This opens a dialog where you can create a new comic. For example, you could have a folder ~/drafts/s00paman_v01 containing the files 01.png, 02.png, 03.png, 04-05.png (which contains two pages in a single image using landscape layout), 06.png, and 07.png. To create a comic in ~/comics/s00paman_v01.cbz enter the following values in the dialog:

The options in the right part of the dialog allow to specify how to new comic and the images in it should be handled. For details, refer to the section called “Convert”. Additionally you can specify the following settings:

  • Open new comic: When enabled, after creating the new comic it will be opened automatically in the viewer.

  • Create comic for each sub folder: When enabled and the source folder contains images spread over multiple sub folder, a separate comic file will be created for each folder.

Image files naming conventions

On first sight it does not really matter how the image files are called. To ensure that your comic works with as many viewers as possible, they should follow the following guidelines:

  1. Use leading zeros. Name your images 01.png instead of just 1.png (or even 001.png in case there are more than 99 pages).

  2. If you combine two pages in one image using landscape layout, seperate the numbers with a hyphen (-). For example, page 9 and 10 should be 09-10.png instead of 0910.png. Otherwise many viewers (including Jomic) would consider it to be page 910, and display it after most other pages.

  3. Use lower case letters only. For instance, use hugo_01.png instead of Hugo_01.png. That way you avoid possibly improperly sorted images on platforms with case sensitive file systems (such as Linux).

  4. Use only character in file and folder names that are know to work on all platforms. Officially, these are: letters A-Z, numbers 0-9, hyphen (-) and underscore (_). One reason again is that these names work on all common file systems. Another is that neither ZIP nor RAR specify which character encoding archives use, so Umlauts, Kanji and other special character can easily get screwed up or result in broken file names.

This opens a dialog where you can select the comic to read.

The dialog also shows a preview image of the currently selected comic (which might take a while to compute when selected the first time) and offers a few options:

  • Open in full screen - If enabled, after opening a comic the view changes to full screen. For more information on full screen, see View Full screen .

  • Adjust file extension - If enabled Jomic will check if the comic file has a proper comic extension (.cbr, .cbz, or .pdf). If not, it will be changed. This applies to too generic and wrong extensions. For a example, a genric .zip file will be changed to a more specific .cbz file, and so will a zipped comic improperly ending in .cbr.

    The file will only be renamed if the comic could be opened successfully. In case you accidentally attempt to open a ZIP archive without any images Jomic will show an error and not rename it to .cbz.

    It the comic files is located on a read only device (such as a CD) or write protected, the renaming will silently fail and the extension retains.

Once you selected a comic, Jomic extracts all images in it to a temporary directory. Next, it analyses the sizes of the images and uses this information to compute the page layout. Because all this can take a while, a progress bar informs you of the current state of affairs.

You can view only one comic at a time, so opening another comic automatically closes the current one.

In case you attempt to open an archive without any images in it, Jomic scans it for comics. If it can find any, it opens a dialog offering to extract the comics from the archive (to the same directory the archive resides in), and open one of them.

Comics and images can use different formats, which may be useful in one situation but inefficient in another. Among the reasons to convert them to something else are:

To convert comics, you first have to specify what you want to convert.

In particular, you can specify:

After clicking "Convert", a new window opens and informs about the progress.

This chapter describes how to adjust a few things not accessible from the graphical user interface. For most people, there is no real need to touch any of these.

Many of Jomic's settings can changed by a menu item or check box in a dialog, but there are some for which there is no user interface item. To change these, you have to manually modify a file called Keep in mind that you can really screw things up when tinkering around here. In case you render Jomic unable to launch without error message, remember that you can reset it by removing If Jomic can not find this file, it uses internal defaults for all settings that are known to work. After exiting the application, a new can be found with the default values stored in it.

The actual location of this file depends on your platform and user name as shown in Table 3.2, “Location of

Example 3.1, “Sample shows the first few lines of such a file.

The first two lines are comments generated when Jomic saves the settings on application exit. There is no point in modifying these lines because they are discarded during application startup.

The other lines however specify a setting and its value apparently using the pattern setting=value. Table 3.3, “Possibly useful settings in describes some of the properties that have no equivalent in the graphical user interface. Note that the value uses Java escape sequences, which means some special characters have to be "escaped" using a backslash (\). In particular:

  • Use \\ to get a single backslash. This is especially important when spefifying Windows folders. For example, C:\Stuff\SomeFolder has to be specified as C:\\Stuff\\SomeFolder.

  • Common characters that need a backslash in front: quote (type \") and hash (type \#).

  • Non-ASCII characters such as Umlauts and Kanji need to be unicode-escaped. This is somewhat unfunny for non-geeks, so better avoid it or get used to typing stuff like \U009f to get an Umlaut-U.

If you do not mind the hassle of subscribing, the jomic-users mailing list is the preferred place to ask questions, report bugs, suggest features, or discuss other issues related to Jomic.

As Jomic is hosted on Sourceforge, so you can also use the following facilities to:

If you want to play with the code or contribute, read the notes on development. This explains how to setup an environment in which you can compile and run Jomic.

To contact me directly, use my SourceForge user page.

The following people and tools were very helpful for the development of Jomic:

  • junrar, a Java package to extract *.rar (and *.cbr) archives.

  • pdfbox, which provides the means to parse PDF comics.

  • MRJ Adapter, which makes it easier for Java applications to behave like nice Mac OS X applications while retaining portability

  • IzPack, an installer generator for Java applications.

  • John Munsch for nagging about the lack of a Web Start release and posting code how to do it.

  • Thomas Kutschera for creating the Jomic icon.

  • Log4j, which logs internal messages and simplifies tracking problems both for users and developers.

  • Several tools that help to assure quality:

    • Emma analyzes code coverage of the test programs.

    • CheckStyle , JDepend, and FindBugs analyze the source code and help detecting problems early on.

    • JRefactory's pretty printer ensures consistent formating of the source code

    • Abbot provides a framework and a script editor for UI testing.

    • JUnit simplifies writting test cases.

  • Creation of the documentation was supported by:

    • The DocBook open repository features transformations to convert the documentation to HTML, JavaHelp, PDF, and some other formats.

    • The official DocBook homepage has all the documentation and tutorials you need to write manuals in this format.

    • Tidy has the monopoly on being the only XML parser in the world producing human readable error messages - at least sometimes.

  • Sven Van Caekenberghe for his article on "Tuning Java Swing applications for Mac OS X", and the related example code. This saved me an awful lot of time.

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

  1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
  2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
  3. State on the Title page the name of the publisher of the Modified Version, as the publisher.
  4. Preserve all the copyright notices of the Document.
  5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
  6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
  7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
  8. Include an unaltered copy of this License.
  9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
  10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
  11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
  12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
  13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
  14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
  15. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

You may combine the Document with other documents released under this License, under the terms defined in section 4above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".

Appendix C. Revision History

Revision History
Revision 0.9.3408-Oct-2011
  • Application

    • Fixed missing Windows start menu entry and shortcuts when using installer.

    • Added support for environment variable JAVA_HOME to chose a specific JVM in the Windows launcher jomic.bat.

Revision 0.9.3301-Aug-2011
  • Application

    • Fixed conversion of CBR comics which still tried to use the unrar command line tool.

    • Fixed processing of CBR comics that use Unicode for contained file names.

    • Cleaned up order of comics during conversion, which seemed rather random.

Revision 0.9.3230-Jul-2011
  • Application

    • Fixed application launch for Mac OS X 10.7 (Lion) by changing the included JavaApplicationStub to a symbolic link to the local stub. This ensures that Jomic uses an Intel stub on Intel Macs and a PowerPC stub on PowerPC Macs [Feature request 3331343].

    • Removed need to install unrar command by switching to junrar.

    • Changed opening of web pages to use Bare Bones Browser Launch instead of BrowserLauncher, which utilizes Java's built in web browser resolution provided that JDK 1.6 or later is used.

    • Removed single JAR because it failed to launch due to different signatures between Jomic classes and Java Help.

  • Development

    • Added an experimental Debian package. Refer to the developer guide for more information.

    • Changed logging to use Apache commons-logging directly and removed the need for WrapLog. Log4j is still there but technically would not be needed anymore because by now PDFBox uses commons-logging too.

Revision 0.9.3121-Apr-2011
  • Application

    • Fixed excessive CPU usage if an image could not be read due to certain error conditions.

    • Fixed spurious broken images if a comic ZIP was created using Mac OS X's compress in Finder. For every image like some.png, compress adds a file __MACOSX/.some.png containing the resource fork [Bug 3285681].

    • Fixed help menu under Mac OS X, which automatically got a search bar that never found anything and disabled all other help menu entries.

    • Fixed size and location of dialog to set blur options. If the dialog now has a sensible size when opened for the first time and remembers its size and location between application launches.

    • Fixed missing images for web start.

    • Changed comic conversion to continue with next comic in case one comic fails.

    • Added possibility to open and convert more PDF comics than before by upgrading to PDFBox 1.5.

    • Changed memory available for Java from 256 MB to 1 GB in order to cope with PDFBox's increased memory requirements when reading complex PDF documents.

    • Improved look and feel under Mac OS X 10.6 by updating to Quaqua 6.5.

    • Changed internal image reading, rendering and filtering to use the Java standard library instead of JAI. Ideally you should not notice any difference. Some things you might notice: Certain broken images cannot be read anymore ("Booh! Hiss!" - Fix 'em!). Detection and processing of broken images is slightly faster. Application launch is slightly faster. The user interface is a little snappier. Certain error messages are less incomprehensible.

  • Development

    • Changed filters for blur to be based on code by JHLabs instead if JAI.

    • Removed the need to be online in order to build the documentation.

    • Changed XML pretty printer from Java to Python. In order for this to work, you need the lxml Python library. Refer to the developer guide for details.

    • Removed application dependency on JAI. Some test cases still use it to show difference and validate test results, so JAI is still part of the repository.

    • Improved section on getting the first build to work. (After trying it myself for the first time in 3 years, I noticed some pitfalls...).

Revision 0.9.3020-Apr-2008
  • Application

    • Fixed and improved image rendering:

      • Fixed error: Problem occurs when computing a tile by the owner [Bug 1827855].

      • Fixed rendering of black and white images [Bug 1456026].

      • Fixed various rendering issues in windowed mode by getting rid of the deprecated and buggy DisplayJAI and using code similar to full screen mode.

      • Fixed resource leaks related to image drawing (Developer note:missing Graphics.dispose()).

      • Improved performance of displaying certain JFIF/JPEG images that until now occupied the CPU for several seconds. (Developer note: This was caused by Graphics2D.drawRenderedImage() being awfully slow with a scale transformation and render settings using VALUE_INTERPOLATION_BILINEAR and has been fixed by internally enforcing all images to be 32-bit RBG without alpha channel.)

    • Fixed "Can't find resouce for bundle" error when attempting to warn that a web page could not be opened [Bug 1886584].

    • Changed space bar and mouse navigation to automatically open previous/next comic when reaching the beginning/end of comic. Page up/down still behave the old way and can be used to navigate without possible files being opened.

    • Added rotation set with View Rotate right and View Rotate left to be preserved over sessions.

    • Added to make it simple for automatic tools and interested web sites to check for updates of Jomic.

    • Updated Quaqua to version 4.4.1.

  • Documentation

    • Added frequently asked question "Why are some images of a comic displayed in wrong order?"

Revision 0.9.2929-Dec-2007
  • Application

    • Fixed conversion of comic folders with nested folders, which failed because the target folder structure was not generated automatically.

    • Fixed image file suffix in converted comics, which retained the value from the source image. If 01.jpg gets converted to PNG, the name now properly changes to 01.png.

    • Reverted JavaApplicationStub to the version included with Mac OS X 10.3, hopefully fixing a problem that prevents Jomic from launching on older Macs.

    • Updated JAI to version 1.1.3 and JAI ImageIO to version 1.1. This improves the robustness of image processing.

    • Updated Quaqua to version 4.0, which adds a few minor improvments for Mac OS X 10.5.

Revision 0.9.2815-Dec-2007
  • Application

    • Fixed that CBR comics could not be opened with Mac OS X 10.5 on Intel Macs by updating to unrar 3.60b6 from the UnRarX distribution. Apparently the version currently downloadable from Rarlabs is broken [Bug 1821998, fixed by aboris26].

    • Fixed AssertionError after canceling "Open comic" dialog and quit [Bug 1821792].

    • Fixed AssertionError when unrar could not be found and the user clicked "Go to download page" [Bug 1822003].

    • Changed license from GPL v2 or later to GPL v3 or later.

    • Updated JavaApplicationStub to version included with Mac OS X 10.5.0. This gets rid of a warning in the Console log of Intel Macs, which said: [JavaAppLauncher] application launched with ppc-thin application stub. Using native application stub instead.

Revision 0.9.2721-Oct-2007
  • Application

    • Fixed page number when viewing a comic starting with a landscape page [Bug 1734338].

    • Fixed MissingResourceException when trying to go to unrar page [Bug 1758007].

    • Fixed detection of broken images caused by empty image files. For some reason, JAI seems to think these are images with zero width and height.

    • Changed created CBZ comics to not compress images of format GIF, JPEG/JFIF and PNG because they are already compressed.

    • Changed default disk cache size from 512 MB to 128 MB. If you prefer the old value (or an even bigger one), change the archiveCacheSizeInMb in as described in the section called “Advanced Settings”.

    • Added proper error message when trying to create a comic from a non-existent source folder instead of just telling "NullPointerException".

    • Added option to blur images for old scans or outdated prints as described the section called “Blur” and the section called “Set blur options” [Patch 1756279, contributed by lordbobo].

    • Added option "Create comic for each sub folder" to "New comic" dialog.

    • Improved progress bar when converting to be updated continously instead of after each converted comic [Feature request 1499100].

    • Improved render quality of thumbnail images.

    • Improved progress bar when opening comic:

      • Changed progress window title to contain name of comic to be opened.

      • Changed layout to match Mac OS X progress windows more closely.

      • Added "Cancel" to be the defaut button.

      • Added possibility to cancel the dialog by pressing Escape or (on Mac OS) Command+..

    • Improved "New comic" dialog:

      • Added "Create" button to be the default button.

      • Cleaned up layout (somewhat).

    • Cleaned up a few JAI based implementations to use standard Java image APIs.

  • Documentation

  • Development

    • Cleaned up the developer guide. Most important it now reflects that SourceForge moved Subversion repositories to a new location a while ago. Furthermore their are no more references to the source code archive which won't be updated anymore (it regularly was broken and did not compile out of the box - unlike the repository).

    • Cleaned up a few issues with ant and xalan. Ant versions before 1.63 should be able to build Jomic, and the targets to generate the documentation should now work on more platforms and JVM versions.

Revision 0.9.2631-May-2007
  • Application

    • Fixed blank images in comic converted to PDF when viewed with a normal PDF viewer (such as Apple's Preview or Adobe Reader). It was caused by an overly simplistic file type recognition only taking the suffix into account. PDF documents only support a few image formats, so Jomic automatically converts unsupported formats to JFIF/JPEG. However, if for example a PNG image was improperly named "01.jpg" it was not converted. [Bug 1721414].

    • Fixed missing update of "Open recent" items in frameless menu (Mac OS X). [Bug 1633498].

    • Fixed opeing of PDF comics with images using CCITT fax encoding by upgrading PDFBox to version 0.73. [Bug 1253492].

    • Fixed maximum width of landscape images trimmed by File Convert which had only half of their supposed width.

    • Fixed additional bytes added at the end of copied files (for example when converting comics). This suprisingly did not seem to cause any actual problems because most readers cut them off.

    • Changed "broken comic page" images to use the same icon as broken thumbnails.

    • Added File New to create a new comic from a set of image files.

    • Added that activating the window using the mouse does not change the current page. [Feature request 1699757].

    • Added File Close for Mac OS X. There is no point having this menu item on other platforms because for the time being Jomic only supports a single window - closing it quits the application. However, under Mac OS X the frameless menu remains and the application keeps running [Feature request 1699756].

    • Cleaned up obtaining of image size from a file. Until now, Jomic looked up an ImageReader using the image file suffix - which is apparently stupid because it is possible that the suffix does not match the actual image format and the reader will fail. If this happened, Jomic used JAI as a fallback to read the whole image (in order to just get the size), which apparenty is a lot slower than just reading the size from the header. Not sure how the code ended up like this, but it is fixed: now Jomic obtains the ImageReader based on the actual image data, reads the size from the header, and there is no more fallback to JAI.

    • Cleaned up error message when failing to open full screen window.

    • Updated to Quaqua 3.8 (experimental, from 2007-05-26). Among other things, this improves the file dialogs for Mac OS X.

  • Documentation

    • Added warning that comics converted to PDF might be converted to lossy JFIF/JPEG images with lower quality.

  • Development

    • Changed JomicTestFixture to automatically prevent JomicStartup.exit() from quitting the application. This prevents premature termination of test cases.

    • Fixed incomprehensible XSLT error messages during DocBook generation when using various combinations of ant, JDK and xalan by adding the xalan.jar included in repository to the classpath used by the DocBook ant targets.

Revision 0.9.2519-Mar-2007
  • Application

    • Fixed warning "Cannot obtain unrar version" for unrar 3.6. Unlike earlier versions, this one has an exit code of 7 when calling without any arguments in order to view the usage text.

    • Moved cache and settings to platform conformant folders under Windows. This only works in case Jomic is launched using jomic.bat because it requires access to environment variables. There is no non-depreacted way to do this in Java unfortunately. So far, the cache was in %TEMP%\jomic.* and the settings in %USERPROFILE%\, so you might want to remove them to release disk space.

    • Moved cache and settings to ~/.jomic/* under Unix. So far, the cache was in /tmp/jomic.* and the settings in ~/, so you might want to remove them to release disk space.

    • Changed log under Windows to be stored in %TEMP%\jomic-%USERNAME%.log instead of being printed in the console.

    • Changed default Unix installer group from "Jomic" to "Graphics" because this is where Kubuntu puts other comic viewers.

    • Removed jomic.bat from installations other than Windows.

    • Added JAI package to installer. While this makes it a lot easier to get Jomic working (no thanks to Sun's incomprehensible download page and confusing installer), this only includes the non-native parts of JAI. This implies that some things run slower than if you would have used Sun's installer matching your platform. (In practice there is not much of a difference except when loading TIFF images. There is a lot of bit-shifting involved in decoding a TIFF which is one of the few areas where Java is lacking compared to C/C++.)

    • Added mouse navigation to full screen mode [Patch 1667595, contributed by fursten].

    • Added check box to "Open comic" dialog to adjust file extension in case it is wrong or does not describe a comic archive. For example, will be renamed to hugo.cbz, and a ZIP archive improperly names hugo.cbr will be renamed to hugo.cbz [Feature request 1214663].

    • Added anti-aliasing to busy/broken substitute images.

    • Updated IzPack to version 3.90. Although there were never any complaints, this among other things fixes a possible installer crash with Java 5.0. It also adds a couple of improvements to the desktop shortcuts and localization.

  • Documentation

    • Improved section on Web Start. In particluar there's now mention of offline capabilities, command line start and a screenshot of the Web Start application manager/cache viewer.

  • Development

    • Changed DocBook integration to use archives for docbook-xml and docbook-xsl instead of the actual source trees as part of the repository. This is useful because:

      • Speed: "svn status" is much faster now because a huge amount of files is not part of the repository anymore.

      • Size: the repository got a little smaller.

      • Easier update: in case of new releases, only the archives and the build.xml have to be adjusted. Before this implied messing with the source tree.

      • Subversion Id's in docbook files maintain their proper value.

      In order for this to work, you have to call ant setup once. This extractes the related archives and makes the required files available to build the documentation.

Revision 0.9.2407-Jan-2007
  • Application

    • Fixed that if the initial "Open file" dialog was cancelled, the application remained open without any frame on platforms other than Mac OS X [Bug 1537824].

    • Added rotation for full screen mode [Feature request 1624604, contributed by fursten].

    • Added front page preview image to "Open comic" dialog when a comic is selected.

Revision 0.9.2312-Nov-2006
  • Application

    • Fixed NoClassDefFoundError in launcher scripts if installation path contained blanks (as in "C:\Program Files") [Bug 1537824].

    • Fixed overlap of two images when reading from left to right in full-screen [Bug 1594668].

    • Fixed keyboard handling in full-screen mode. (Note: Java keyboard handling is a nightmare. Java full-screen mode is a nightmare. Together, they are almost unbearable. After lots of sweat and tears I'm now reasonably convinced that assigning a KeyListener to the full-sscreen frame directly is pretty much on the only way to make it work. With no other JComponent in the frame needed and no InputMap ever touched.) [Part of Bug 1445957].

    • Fixed occasional empty screen when switching to full-screen. The reason was that Swing's repaint events were disabled too late, so that after initially drawing the image a repaint was sent. Because the full-screen paint() does nothing, it just cleared the screen.

    • Fixed AssertionError when attempting to open next/previous comic while in full-screen and already at last/first issue.

    • Fixed error message if full-screen could not be opened due incapable device.

    • Changed image rendering to use bilinear interpolation instead of the platforms default. This increases the quality of rescaled images, in particular under Windows XP.

    • Added check box "Open in full screen" to "Open comic" dialog.

Revision 0.9.2231-Jul-2006
  • Application

    • Fixed File Open next/previous , which did not use natural order. For example, blah-100.cbz was not the next comic after blah-99.cbz [Bug 1511024].

    • Fixed AssertionError when attempting to open a PDF comic without any images [Bug 1524833].

    • Fixed that some errors showed the first line of the message twice.

    • Changed unrar to extract only image files from the archive. For this to work, Unrar 3.5 or later must be installed. Otherwise you get an error telling "cannot process unrar command line options".

    • Changed default in "Open comic" progress bar note from " " to "..." in order to prevent a relayout when the note is set to a "real" text the first time.

    • Added View Full screen [Feature request 1079339].

    • Added command line option --clear-cache to remove cached files from disk [Feature request 1456025].

  • Documentation

    • Added nighly build for those who want to try out new features from the development source.

  • Development

    • Changed organization of test files to use the following directories:

      • tests/generated: generated and filled with data by the ant target "testdata".

      • tests/input: static test data that would be too complicated to generate.

      • tests/output: output directory for test cases that write files for later examination. The ant target "clean" deletes all these files.

      • tests/expected: static files representing expected test data that must match its equivalents in tests/output. Use TestTools.assertFilesEqual(baseName) to comapare two such files.

      Furthermore, TestTools.getTestFile(baseName) now looks up both tests/generated and tests/input to retrieve the file.

  • Added target test-jml, which runs the test suite with JML assertions enabled. In order for this to work, JML 5.3 or later has to be installed. For more information on JMP refer to

    Currently only a few classes feature a JML specification, but this should grow. The main problems with this are the long compile times and the fact that none of the pretty printers I know can handle JML comments correctly.

Revision 0.9.2125-May-2006
  • Application

    • Fixed NullPointerException when cancelling "Open dialog" again after cancelling "Open dialog" already on startup and attempting to open a comic from the framelesss menu under Mac OS X.

    • Fixed command line option --license, which did not do anything.

    • Added default file name to "Export image" dialog.

    • Added a short application description and links to libraries used to the "About" dialog.

    • Added a generic error dialog for all errors that happen "in the background" (read: the evil Java AWT event handling thread). So far, Jomic should already have reported most of such errors already, but one never knows.

  • Development

    • Changed todo report to use same template as the Checkstyle report.

    • Added system property net.sf.jomic.test.ignoreExit, which when set to "true" prevents Jomic from calling System.exit(). This is useful for test cases that want to quit Jomic without cancelling the test case.

    • Added system property net.sf.jomic.test.ignoreMessageDialogs, to supress error dialogs and just log the message. This is useful for testing to prevent tests from getting stuck because of modal error dialogs popping up.

    • Improved style checks:

      • Updated to Checkstyle 4.1.

      • Added a lot of new checks. Some have been part of the coding guidelines, but not been checked for yet. Most important, attempting to assign a new value to a parameter and using more than one return statement is now detected. Interesting new checks are those for cyclomatic and NPath complexity. They mercilessly point out messy code segments.

      • Suppressed checks for test cases that make no sense in test code. For example, test code uses a lot ofmagic numbers as expected test results. Moving this to symbolic constants is not going to make the code more legible.

Revision 0.9.2011-Apr-2006
  • Application

    • Fixed startup error NoClassDefFoundError: org.apache.xerces.parsers.SAXParser by updating to Xerces-J 2.8.0. Probably there was some incompatibility between Java 1.5 and Xerces-J 2.7.1 because I could not reproduce this with Mac OS 10.3 and Java 1.4 [Bug 1467579]

    • Fixed a few minor issues with file dialogs under Mac OS X by upgrading to Quaqua 3.6.5. For details, see Quaqua's changes.

    • Changed "Go to page" dialog to preselect page number so the user can overwrite it by just starting to type, and improved keyboard support: press Enter to go to the specified page, or Escape to cancel.

    • Changed UnRAR utility included with Mac OS X release from UnRarX 3.20 to a universal binary of unrar 3.51. This should speed up opening CBR archives with Intel Macs.

  • Development

    • Changed instructions on localization to start with the quick steps on adding a new language, and plunge in the gory details later.

    • Changed version control system from CVS to Subversion (SVN). This makes development a lot less painful. The developer guide already contains the relevant instructions to check out the new repository.

      The CVS will still be around for some time as backup, but it is frozen at version 0.9.19. Changes are commited to the Subversion repository only.

    • Change creation of web site thumbnails to use the ant <image> task. In order for this to work, the lib/jai_*.jar must be in the ant classpath.

    • Cleaned up repository:

      • Removed a bunch of generated files from repository, in particular things derived from version.xml or created by TestDataCreator. This results in a reposity that will not compile immediately after a check-out, though. Refer to the developer guide on how to get started.

      • Fixed cyclic dependancies. (Thanks to Subversion, a rename does not require a SourceForge support request anymore. Imagine that, CVS.)

    • Added som metrics that outline how the source code and project evolved over time. This is pretty nerdy stuff unless you are into software engineering.

    • Added a CIA project, which among other things allows to read commits using an RSS feed.

Revision 0.9.1927-Mar-2006
  • Application

    • Fixed AssertionError caused by missing default value for archive cache size [Bug 1459398].

Revision 0.9.1827-Mar-2006
  • Application

    • Fixed missing error messages for broken command line options [Bug 1449153].

    • Fixed broken error message if JAI was missing or the JVM was ourdated. This resulted in a MissingResourceException because localization is not set that early. Consequently, these error messages will not be localitezed any more [Bug 1438796].

    • Fixed archive cache handling if more than once client accessed the same comic.

    • Added option to change cache size in For example, to use a 4 GB cache, specify: archiveCacheSizeInMb=4096. The default is 512 MB.

    • Added possibility to use mouse to navigate pages [Feature request 1087618].

Revision 0.9.1712-Mar-2006
  • Application

    • Fixed (at least to some extent) the fact that the keyboard seemingly stopped working after hiding the tool bar of the information view. For some reason, Swing can't really cope with a panel changing to setVisible(false) in a visible window. However, it does not mind settings a components preferred size to (0, 0), which in combination with a validate() also hides the component [Bug 1024731 and bug 1114531]. Nevertheless, the page up and down key will still not let you read the comic because they get assigned to one of the scroll bars. Work-around: use the space key or command-left and right instead, or restart the application. This issue continues in bug 1445957.

    • Fixed archive cache, which did not re-extract the archive if one or more images were missing from the cache for some reason.

    • Fixed display of page numbers for landscape images when viewing with View Show two pages disabled, which showed only a single page number in the title bar.

    • Fixed "go back a few pages" command, which went back only one page.

    • Changed Mac OS application to stay open if the comic window is closed, and added a frameless menu for this case. On other platforms, closing the last window still closes the application [Feature request 1220018].

    • Changed file dialogs to use Java's own JFileChooser instead of the system dependant FileDialog. This is a good thing for most Unixes because theirs file dialogs often suck even more than the Java one, or are buggy beyond compare. This is also a good thing for Windows XP because when preselecting a previously opened ZIP comic, the native file dialog treated it as a directory of images - which Jomic cannot not open. However, this is a bad thing for Mac OS because it harms user interface consistency. Oh well.

    • Changed toolbar images from Java Look and Feeld graphics repository to Crystal icons, and added toolbar images for some more commands I could find sensible images for.

    • Added Quaqua, which enhances the Apple look and feel under Mac OS X. Most important, it provides a file and color dialog (JFileChooser and JColorChooser) that roughly simulate the user experience of the native dialogs.

    • Added File Convert to convert between different comic and image formats, and optionally limit the size of images.

    • Added automatic resize of displayed images when the window size changes, and changed the "Fit to ..." entries in the View menu to radio menu items.

    • Added python script to launch command line Jomic from Mac OS X application bundle.

  • Development

    • Changed XML pretty printer from Tidy to Xerces. This implies:

      • No more need for stupid "&#160;" to prevent Tidy from killing blanks.

      • No more stupid blanks inserted by Tidy [Bug 1253487].

      • Only ASCII characters are allowed for now. Most likely this can be fixed, but it probably requires to read messy documentation about Java and XML. If anyone feels like it, take a look at net.sf.jomic.XmlPrettyPrinter.

      • Large portions of some XML documents got reformatted because Xerces sorts attributes alphabetically.

    • Changed JomicFrame to process only comic related commands, and delegate all other commands to JomicApplication.

Revision 0.9.1601-Jan-2006
  • Application

    • Fixed IncompatibleClassChangeErrorpreventing Jomic from exiting properly under Mac OS X. As far as I can tell, this was caused by a reference to an older version of xerces which was not distributed with Jomic, but installed in the local Java "endorsed" directory during compile time [ Bug 1388363].

    • Fixed improper error message without JAI installed [ Bug 1304663].

    • Fixed broken image display in WebStart release caused by outdated WrapLog.jar.

    • Added precaching of images needed to show next page [ Feature request 1188651].

Revision 0.9.1520-Dec-2005
  • Application

    • Fixed visibility of info panel on startup.

    • Fixed progress bar staying in background of "Open error" dialog.

    • Changed icon in window title bar to use the Jomic logo instead of the Java default icon. This only makes a difference on platforms that support this feature.

    • Added memory cache for images. The current state of the cache can be seen using Help System information .

    • Added disk cache for extracted archives. The current state of the cache can be seen using Help System information .

    • Added thumb nails for pages. Use View Show page thumbs to see them.

    • Added shortcuts for KDE and Gnome when using the Jomic-Installer.jar.

Revision 0.9.1425-Sep-2005
  • Application

    • Fixed that sometimes after opening an archive, the first page did not show [ Bug 1295961].

    • Fixed broken classpath in Windows launcher script jomic.bat[ Bug 1303933]. This should not happen in future releases because from now on jomic.bat is derived from by a script.

Revision 0.9.1316-Sep-2005
  • Application

    • Fixed View Show toolbar , which did not do anything upon selection [ Bug 1232441].

    • Fixed comic selection in "open comic in archive": picked the wrong of two index variables, which could result in the wrong comic to be opened, or an ArrayIndexOutOfBoundException error.

    • Fixed wrong localization keys for error message when JAI was not installed.

    • Fixed cancelling of color chooser for View Set background color : when cancelling after the color was already changed and "OK'ed", it reverted to the color set at application start, and not the one from the last change.

    • Changed paths for comic images shown with View Show information to be relative as stored in the archive.

    • Changed info panel to be visible on startup depending on corresponding setting.

    • Removed directories from selection in "open comic in archive" dialog.

    • Added command line option --continue to open comic read when running Jomic the last time [ Feature request 1188652]

    • Added "Show internal call stack" check box to error dialogs (in case a stack was passed). While this is not particular helpful for end users, it simplifies debugging of the Web Start release as I cannot figure out where the log ends up for this release.

    • Fixed flickering when opening comic caused by showing the front page twice.

    • Improved splash screen: changed image to plain logo using 4:3 aspect ratio [Thomas Kutschera], changed size to depend on screen dimension, and added version number.

    • Updated to current libraries: IzPack 3.7.2, MRJAdapter 1.09, PDFBox 0.7.1. This is just house keeping and does not address any particular issues.

  • Documentation

    • Added documentation for all the things that can happen during File Open.

  • Development

    • Cleaned up error handling: Collected some utility methods to simplify error handling and reporting in ErrorTools. Consolidated code to show error dialogs. Use one of the following methods:

      1. JomicTools.showError() for localized messages during "normal" runtime.

      2. StartupTools.showError() for non-localized messages before LocaleTools can be initialized.

      Both these methods call ErrorTools.showError(), which is somewhat raw and should not be called directly.

    • Changed handling of default values for properties, in particular Settings: the old way was to write methods like Settings.getShowToolbar(), which specified a default by calling BasicSettings.getBooleanProperty("showToolbar", true). However, other parts of the code (in particular BooleanSettingMenuItem) are too general to call these wrappers, and have to call BasicSettings.getBooleanProperty("showToolbar") without knowing about the default value specified in Settings.getShowToolbar(). This caused Bug 1232441.

      Now property default values have to be specifed using BasicSettings.setDefault(). To avoid future bugs in this area, BasicSettings.getProperty(name, defaultValue) has been depracted and throws an IllegalStateException. This is ugly because it practically removed this method from the Properties interface. However, Jomic-wise, this method should not be used anymore because it just causes confusion.

Revision 0.9.1202-Jul-2005
Revision 0.9.1128-Jun-2005
  • Application

    • Fixed missing JAR in launcher scripts and jomic.bat, and in installer [ Bug 1228058].

    • Fixed broken JAR in Web Start release. (Seems that for some reason it got corrupted during upload).

    • Fixed online help by moving manpage to separate document. This works around a bug in the DocBook XSL stylesheet for JavaHelp, which seems to be incapable of producing valid HTML from <refentry> or one of its children.

    • Added black border around splash screen.

  • Documentation

    • Fixed non-valid HTML and missing links in user guide, developer guide, and FAQ. This was caused by a bug in Xalan 2.4 anf fixed by switching to Xalan 2.6.

      (Developer note: While I knew about the fix for quite a while, it took me ages to figure how to convince ant to actually use the updated Xalan. Turns out on Mac OS X 10.3, xalan.jar 2.4 is included in /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Classes/classes.jar and can not be replaced using funky -classpath magic. Instead, you have to resort to violence and copy it to /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home/lib/endorsed/. While this works for now, it will eventually cause headache. Oh the joy of classpath...).

Revision 0.9.1019-Jun-2005
  • Application

    • Fixed drag and drop in Finder, which sometimes did not work upon launching Jomic. Instead, the "Open comic" dialog popped up [ Bug 976914].

      (Developer note: This fix applies two changes: First, the event handler for Mac OS X "open document" events is installed before doing anything else, so no events can get lost. Second, Jomic does not use MRJAdapter's Application.addOpenDocumentListener() rather than MRJApplicationUtils.registerOpenDocumentHandler(). While this works, it is ugly because MRJApplicationUtils got deprecated with MacOS X 10.3.)

    • Fixed launching of Web Start release: on some machines, clicking the "Start!" link downloaded the application and libraries, but afterwards silently failed. This happened if there was an outdated local version of JAI installed utilizing the native libraries. The Web Start release includes the most current JAI version, but without native libraries. Apparently, current Java classes cannot work with outdated native libraries. The fix simply disables native libraries for the Web Start release [ Bug 1181049].

    • Changed "Open comic" dialog to preselect most recent comic. This also works after a restart [ Feature request 1219504].

    • Added recognition of ".jp2" file name suffix as JPEG 2000. For some reason, ImageIO does not seem recognize it by itself.

    • Added --help command line option to show a list of possible options and exit.

    • Added --license command line option to show a short summary of the license Jomic is distributed under and exit.

    • Added --version command line option to show the version number and exit.

    • Added splash screen for Mac OS X release because especially on slower machines, Jomic takes ages before giving a visual indication that something is happening.

    • Added "Read me " and license text files to Mac OS X release.

  • Documentation

    • Fixed section on installation. As of version 0.9.9, both the Mac OS X and WebStart release include JAI. Consequently, the Mac OS X release simply "just works" out of the box.

    • Added manpage describing all command line options.

  • Development

    • Added Java Simple Argument Parser (JSAP) to parse command line options. For more information, see

    • Added early startup logging going to System.out. To enable it, set the system property net.sf.jomic.logStartupto "true". Use this kind of logging only before Jomic.setup() has been called.

Revision 0.9.923-May-2005
  • Application

    • Fixed check if page is in range at Go To page .

    • Fixed handling of ZIP archives whose contents use non- ASCII file names. The ZIP specification does not provide any means to tell the encoding, which results in Sun Bug 4244499 (place #2 in the Bug-Top-25). The fix was to switch to an alternative ZIP implementation, namely the one used by ant. Regression tests showed that the test to reproduce Sun Bug 4615343 failed, so I hack-fixed this and submitted Ant Bug 35000 [ Bug 1196175].

    • Fixed leveling of heights in two page mode: until yet, heights were leveled only if the two images had a similar aspect ratio. Now they are also leveled if the images have a similar height. This improves rendering of images that spawn for example four thirds of the width of a single page [ Bug 1188149].

    • Fixed File > Reveal for file names with characters that needed to be AppleScript-escaped. The fix was to get rid of calling a dynamically created AppleScript using osascript. Instead we simply call NSWorkspace.sharedWorkspace().selectFile()[ Bug 1101235]

    • Fixed missing executable file mode (the x-bit) for [ Bug 1101228]

    • Changed Help Help to use the internal JavaHelp viewer. Among other features, this adds a nice search function.

    • Changed Help Report bug and Help Request feature to show the list of open requests instead of a form to submit a new one. This should reduce the amount of requests for full screen mode ;-).

    • Added German localization. If you want to write translations for other languages, see the chapter on localizationin the developer guide.

    • Added property sortMode. The default value is "natural", which implies the same sort order as with the previous version of Jomic. You can change the value to "smart" to treat names like for example "image-1617.png" same as "image-16+17.png". This should fix many seemingly out-of-sequence images. The only problem with it is that with some file names it is not clear where the volume/issue number ends and the page number starts. (Of course, to really fix this the creator of the comic archive should have named them properly in the first place.) [ Feature request 1081821].

    • Added JAI-related JARs to Mac OS X application bundle. This yields the following improvements:

      1. No more need to install JAI manually. Apart from the annoyance, it apparently did not work with some 10.3.8 machines. (Read the related forum threadfor details)

      2. Up-to-date JARs from the Linux distribution. Apple's distribution is from late 2003.

      3. Support for additional image formats is already included, most notably JPEG 2000.

      The main disadvantage is that the application size more than tripples.

    • Added "busy" mouse pointer while rendering image to display.

  • Development

    • Replaced jemmy by Abbot to implement automatic UI tests.

Revision 0.9.816-Mar-2005
  • Application

    • Fixed unrar tool included with MacOS X release. (It did not work because the executable bit got lost by the <dmg> ant task. This release's *.dmg is built by an ugly-but-working <exec executable="hdiutil">.)

    • Changed line with system information to be logged before Jomic checks for requirements. That way, if something is lacking, log files included in bug reports still contain system information.

Revision 0.9.713-Mar-2005
  • Application

    • Fixed ArrayIndexOutOfBoundsException when opening a comic that did not have any of the recognized file name suffixes. (This was only possible from the command line, for example using a CBZ comic named "something.txt". Jomic did still recognize and open the archive because of the "magic" file header, but got confused when computing the previous/next comic based on this name.)

    • Fixed silly bug in suffix-based detection of RAR archives. In practice, it did not matter because RAR archives have been successfully detected by the "magic bytes" in the file header.

    • Changed selection of line in info panel to behave like a Go To page .

    • Added experimental support for PDF comics. The implementation uses PDFBox, available from For now, only JFIF/JPEG images work, PDF documents containing other image formats result in a NullPointerException.

    • Added View Set background color [ Feature request 1086835], and changed color of unused window area also to use it (instead of whatever the LayoutManager chooses depending on the platform).

    • Added possibility to navigate menus using mnemonics on platforms that support this. (Note: The mnemonics are automatically derived from the menu labels, and might change if menu entries are moved or relabeled.)

  • Development

    • Changed logging library from log4j-core to log4j-1.2.9 because of PDFBox.

    • Finally converted the last few remaining crappy shell scripts to decent ant targets. (Well, there is one left but it is rarely used and will be gone once I can find non-quasimodo toolbar images, so I'm not going to convert this.)

    • Changed communication of between Settingsand net.sf.jomic.ui.*to use PropertyChangeListeners.

    • Added test report to home page. It is really painful to make Ant, Eclipse, and jUnit work together. See hints.

Revision 0.9.603-Jan-2005
  • Application

    • Fixed installer by adding work-around for "FileNotFoundException:" during installation. The installer tried to be smart and install only on platforms that can handle them. Unfortunately, it afterwards tried to modify files that have not been copied. See IzPack's [ Bug 002982] for details. The caveat is that now all scripts are installed, independent of the platform.

    • Fixed opening of web browser for platforms other than Mac OS X. (I missread the MRJAdapter documentation, believing that BrowserLauncher is already included with MRJAdapter.)

    • Added File Reveal for Windows. Unlike the Mac OS X variant, it only opens the directory with the archive in the Explorer, but does not highlight it.

Revision 0.9.527-Dec-2004
  • Application

    • Fixed "Cannot find unrar resource" error when starting Web Start release under Mac OS X.

    • Fixed missing refresh of window title when toggling View Show two pages .

    • Fixed cancel of opening comic during "Analyzing images" phase.

    • Fixed AssertionError when window became to small to display image.

    • Fixed cleanup: when attempting to open a broken archive, an empty directory remained in the internal cache directory.

    • Changed Web Start release to use separate JAR files instead of the "big" Jomic.jar. This reduces the amount to download for updates.

    • Added Installer (using IzPack).

    • Added Mac OS X document icon.

  • Development

    • Cleaned up naming of properties. They all now start with net.sf.jomic, for example jomic.home is now called net.sf.jomic.home. Furthermore, you can now specify all properties from at the java command line, provided that they are prefixed properly, for example: java ... -Dnet.sf.jomic.showToolbar=true .... The properties are documented in common.PropertyConstants.

    • Added instructions on how to use the source code archive. Summary: Use it to look at the code, and use the CVS for building the code.

Revision 0.9.415-Nov-2004
  • Fixed all experienced negative effects of switching to ImageIO (with version 0.9.3) by falling back to JAI's "FileLoad" operator when ImageIO can not figure out an image (even if it is valid, like 12-color gray scale images). This also restores built-in TIFF support.

  • Fixed View Fit to width (or height) with View Show two pages enabled; it was shown just the other way round [ Bug 1062686].

  • Fixed stop in progress bar during opening comic.

  • Improved performance when browsing pages in huge comics (for example 10000 images) with View Show two pages enabled.

Revision 0.9.301-Nov-2004
  • Fixed drag and drop in Mac OS X Finder. Everything that worked in 0.9.1 works again. Bug 976914 is still there, though.

  • Fixed visibility of scroll bars with View Zoom to fit : due to rounding errors during zoom, the image sometimes ended up 1 pixel too large, resulting in unwanted scrollbars.

  • Improved recognition of images: instead of a (buggy) hard-coded list of suffixes, all suffixes recognized by Java ImageIO are taken into account. By default, these are PNG, JFIF/JPEG and GIF.

    On the negative side, this drops built-in support for TIFF. If you use one of the supported platforms, you can get a decent set of formats by installing JAI Image I/O Tools. In particular, this includes JPEG 2000 and TIFF. Unfortunately, JAI Image I/O Tools do not support Mac OS X.

    Although Mac OS X already has Apple's own TIFF plugin installed, it seems to be broken for images with Intel-byte order. To sum it up: If you want to read TIFF-based comics under Mac OS X, use Jomic 0.9.1.

  • Changed internal computation of image sizes during laying out pages to use ImageIO. This implies:

    1. Parsing JPEG/JFIF and PNG uses no homebrew code anymore. If it does not work now, it's not-my-fault.

    2. Parsing GIF is much faster because it does not read the whole image anymore.

    3. Parsing TIFF will not work anymore unless you install a proper ImageIO plugin (see above).

  • Added View Zoom to fit height and View Zoom to fit width [ Feature request 994262].

  • Added View Rotate left and View Rotate right [ Feature request 1044130].

  • Added Help System information to view platform details, memory status and available ImageIO plugins.

Revision 0.9.217-Oct-2004
  • Fixed ugly flickering when switching from a page consisting of 2 images to a page containing only one image. Instead of showing 2 images in separate panels, Jomic now computes one big image containing both images, and displays it. On the downside, this approximately doubles the amount of memory required for displaying such a page.

  • Fixed display of 4-bit images [ Bug 976911].

  • Added support for Java Web Start. This simplifies installation for users of platforms other than Mac OS X.

  • Improved usage of screen space when showing two images with View Zoom to fit enabled: if both images have about the same ratio, they are scaled to have the same height. Otherwise, they are scaled to have the same width.

  • Improved viewing of comics with left and right image swaped:

  • Cleaned up capitalization of menu labels.

  • Updated to MRJAdapter 1.08.

Revision 0.9.108-Aug-2004
  • Changed application launch: if no comic is passed, Jomic opens a file dialog instead of an empty window.

  • Changed sorting of file names for comic images, File Open next , and File Open previous to ignore case ( s00paman_v1_c01.cbz now comes before s00paman_V1_c02.cbz - note the upper case V) and natural ( s00paman_v1_c99.cbz now comes before s00paman_v1_c100.cbz; before you had to use s00paman_v1_c099.cbz).

  • Changed display of page numbers to adapt to state of View Swap Left And Right Image . For example, the text "Page 5 and 6 of 31" changes to "Page 6 and 5 of 31".

  • Added File Reveal to show current comic in Finder.

Revision 0.9.021-Jul-2004
  • Fixed View Swap Left And Right Image on startup: although the checkmark in the menu was restored properly, the images were not actually swapped.

  • Fixed stuck application on some corrupted CBZ archives by adding a work-around for Sun Bug 4615343 ( ZipFile.entries() throws java.lang.InternalError).

Revision 0.8.1315-Jul-2004
Revision 0.8.1211-Jul-2004
  • Changed View menu to be disabled if no comic is loaded yet. This prevents an AssertionException.

  • Improved error handling: a broken GIF or TIFF image does not anymore stop opening a comic.

  • Added View Swap Left And Right Image to read two pages from right to left. This is useful for reading Japanese comics (Manga mode).

  • Removed test classes from distribution, saving about 30 KB of disk space.

  • Updated to MRJAdapter 1.07. This fixes the scrollbar position in the About dialog, and adds support for than Mac OS X.

Revision 0.8.1115-Jun-2004
  • Fixed bug: When opening a comic using drag and drop in the Mac OS X Finder, occasionally the error message "cannot handle application event (type=5)" showed up. The actual reason for that was a NullPointerException caused by initialializing an internal field too late.

  • Fixed missing user-guide, available via HelpHelp. This was lost after reorganizing the documentation in 0.8.10.

  • Fixed resource leak: Added removal of already extracted files if the extraction is interrupted (for example by some error). Users of older versions of Jomic should make sure the cache directory is empty by removing ~/Library/Caches/jomic.

  • Moved progress bar from tool bar to own window. This prevents the possibly hidden toolbar area to show during opening of a comic, which looked pretty clumsy.

  • Added "Cancel" button while opening a comic.

  • Improved recognition of archive type: if the archive file starts with "PK", assume it is CBZ. if it starts with "Rar!", assume it is CBR. Otherwise, look at the file suffix (just as before). This fixes the issue that Jomic reported ZIP archives ending in ".cbr" (or RAR archives ending in ".cbz") as broken. [ Task 98650]

  • Added icon [Thomas Kutschera; Task 95169]

Revision 0.8.1005-Jun-2004
  • Fixed menu shortcut for ViewShow Toolbar: for some reason, Command Alt T was not rendered in the menu, although the shortcut itself worked. Strangly, this only happend if Jomic was launched from the Finder, but worked if launched from the Eclipse developer environment. It still is unclear why this happens, but you can now use Command B to show/hide the toolbar.

  • Fixed display of page numbers: now the numbers match the user's expectation, for example double images represet two pages. Before, each image was considered to be one page.

  • Moved display of pages number from toolbar to title bar. This ensures that the page number is visible even without the toolbar being shown.

  • Improved dialog when attempting to open an archive without any images:

    • Simplified long buttons labels: now there is only one button to "extract contents". To not open the comic, disable the new "Open selected comic".

    • Changed dialog type from "error" to "warning".

  • Added keyboard shortcuts to go to first ( Home) and last ( End) page.

  • Added keyboard shortcuts to go to next few pages ( Alt Page Down) and previous few pages ( Alt Page Up) to speed up skipping uninteresting sections.

  • Added GoFirst and. GoLast

  • Added GoTo Page... to go to a certain page number.

  • Added keyboard shortcuts to go to first ( Home) and last ( End) page.

Revision 0.8.902-May-2004
  • Added some keyboard shortcuts to navigate in comic [ Request 937652].

  • Added ViewShow Toolbar to show/hide the toolbar. This can preserve some screen space [ Request 941993].

  • Added ViewShow Info to show some information about the images in the comic.

  • Changed handling of broken images: instread of showing an error message, Jomic shows a "broken" default image in the comic view. To find out why it is broken, use ViewShow Info.

  • Improved handling of non-comic archives: If Jomic detects an archive that does not contain any images, it opens a dialog with the following options:

    • Extract the archive (to a directory named after the archive, located in the directory of the archive). For example, "/Users/me/comics/blah.cbz" is extracted to "/Users/me/comic/blah"

    • Extract the archive (as above), and view the first comic in it. This options is only available if there actually are comics in the archive.

    • Cancel

  • Increased movement speed of scrollbars (for ViewActual size) when using the mouse wheel or arrow buttons.

Revision 0.8.820-Apr-2004
  • Fixed disabled menu FileOpen recent on start.

  • Added FileOpen recentClear menu to get rid of all entries.

Revision 0.8.719-Apr-2004
  • Fixed Mac OS X application name: Activity Viewer/top now lists Jomic as "Jomic" instead of "JavaApplicationStub"

  • Changed last few references to MRJ Toolkit to MRJ Adapter. As a result, Jomic compiles and basically runs on platforms other than Mac OS X.

  • Changed logging library to reduce bloat. Instead of log4j-1.2.8 (about 330k), Jomic now uses log4j-core (about 80k), which is based on log4j-1.1.3. <rant audience="developers">Initially, I intended to switch to Sun's own java.util.logging package. Turns out this is probably the most screwed up thing ever included in the standard Java distribution (apart from Swing, of course). An insightful rant about the design and negative experiences when switching are available on the web. My solution for an easy transition was to provide log4j-like Loggerand Levelclasses that act as proxies to the log4j-core, and implement my own (simple) Configurator. You can find the relevant code in net.sf.jomic.logging.</rant>

  • Removed unused images to reduce bloat.

  • Added FileOpen next and FileOpen previous. In case there are several comics in the same directory as the current comic, this opens the next/previous issue.

  • Added FileOpen recent.

  • Added mailing lists for users and developers. Use HelpMailing list.

Revision 0.8.609-Apr-2004
  • Fixed Mac OS X application event handling: Opening a comic from the finder did launch Jomic, but failed to open the comic because the event handler was installed too late. [ Task 96626]

  • Fixed OutOfMemoryErrorwith big images. Viewing 2000x3000 images in two page mode now works (JVM option -Xmxin Info.plist).

  • Improved progress bar

    • Fixed indeterminate progress bar while obtaining the number of images in the archive

    • Changed progress bar to use a bigger weight for extracting an image than for getting the size of an image

    • Added progress bar for .cbr archives [ Task 95145]

  • Added enabling/disabling of menu items and tool bar icons depending on the operation currently performing. This also fixes a bug where the user could open a comic while already opening a comic, resulting in a locked user interface.

  • Added export of current image. Use FileExport image. If the user views two pages, only the left one is exported. Switch to single page mode to also get the right one.

  • Added help menu entries to get support.

  • Enabled internal consistency checks in release version, not only during development and testing (JVM option -enableassertions in Info.plist).

Revision 0.8.501-Apr-2004
  • fixed scale mode: the first comic always showed up in actual size and ignored the settings

  • fixed two page mode

    • the setting was not read properly from jomic.settings (replaced Boolean.getValue() by Boolean.valueOf() - great naming, Sun!)

    • the initial value was not shown properly by the check mark in menu ViewShow two pages

  • fixed typo in jomic.settings("TwoPageMode Mode")

Revision 0.8.428-Mar-2004
  • fixed bug: menu GoNext and GoPrevious did not check if they are about to exceed the available pages.

  • improved performance for evaluating the size of JFIF/JPEG and PNG images

  • improved information shown in error dialog:

    • if the related Java exception has a null-message, the dialog at least shows the name of the exception. Of course, this is not really useful to an end user, but it helps when mentioned in a bug report. Short introduction to popular Java exceptions: java.lang.AssertionExceptionmeans "coder is an idiot", everything else means "coder is a complete idiot" ;-)

    • the message now includes the message of all related earlier errors ( Throwable.getCause()), which is particular helpful when the messages conform to the "cannot do something" schema; all internal exceptions tunneled by Jomic should.

  • changed progress bar to not reset between extracting and reading images

Revision 0.8.325-Mar-2004
  • fixed bug: empty directories are now removed from cache path when quitting or opening a new comic. if you used an earlier version of Jomic, you have to remove the old cache directory manually. to do that, open a terminal and type: rm -r /tmp/jomic

  • added two page mode; use menu ViewShow Two Pages. note that opening a comic now takes longer because Jomic needs to determine the size of all images in order to decide if a page is a double page or not. The current implementation is particular slow because it reads the whole image for that (task 95166).

  • added toolbar icons from the Java look and feel Graphics Repository

  • added progress bar when extracting .cbz archives

  • moved cache path from /tmp/jomicto ~/Library/Caches/jomic

  • wrapped the dreaded MRJToolkit with MRJ Adapter; this should make it easier to support other platforms while retaining the Mac OS X features.

Revision 0.8.215-Mar-2004
  • improved error message if comic cannot be loaded

  • removed junk from the distribution archive

Revision 0.8.114-Mar-2004
  • first public release