LHA (file format)
From Wikipedia, the free encyclopedia
LHA | |
---|---|
File name extension | .lzh, .lha |
Internet media type |
|
Developed by | Haruyasu Yoshizaki |
Type of format | Data compression |
LHA is a freeware compression utility and associated file format. It was created in 1988 by Haruyasu Yoshizaki (吉崎栄泰 Yoshizaki Haruyasu?), and originally named LHarc. A complete rewrite of LHarc, tentatively named LHx, was eventually released as LH. It was then renamed to LHA to avoid conflicting with the then-new MS-DOS 5.0 LH ("load high") command. According to early documentation, LHA is pronounced like La.
Although no longer much used in the West, LHA remains popular in Japan. It was used by id Software to compress installation files for their earlier games, including Doom and Quake. LHA has been ported to many operating systems and is the main archiving format on the Commodore Amiga computer. This is due to Aminet, the world's largest archive of Amiga related software and files, standardising on Stefan Boberg's implementation of LHA for the Amiga. Microsoft has released a Windows XP add-on, Microsoft Compressed (LZH) Folder Add-on, designed for the Japanese version of the operating system[1][2].
Contents |
[edit] Compression methods
In an LZH archive, compression method is stored as a 5-byte text string, which is rare for archiver format.
[edit] Canonical LZH
LHarc compresses files using algorithm from Yoshizaki's earlier LZHUF product, which was modified from LZARI developed by Haruhiko Okumura, but uses Huffman coding instead of arithmetic coding. LZARI uses Lempel-Ziv-Storer-Szymanski with arithmetic coding.
[edit] -lh0-
No compression method is applied to the source data.
[edit] -lh1-
This method is introduced in LHarc version 1.
It supports 4KiByte sliding window, with support of maximum 60 bytes of matching length. Dynamic Huffman encoding is used.
[edit] -lh4-, -lh5-, -lh6, -lh7-
Methods 4, 5, 6, 7 support 4, 8, 32, 64 KiByte sliding window respectively, with support of maximum 256 bytes of matching length. Static Huffman encoding is used. lh5 is first introduced in LHarc 2, followed by lh6 in LHA 2.66, lh7 in LHA 2.67 beta. LHA itself never compresses into lh4.
[edit] -lhd-
Technically it is not a compression method, but it is used in .LZH archive to indicate the compressed object is an empty directory.
[edit] Joe Jared extensions
Joe Jared extended LZSS to use larger dictionaries.
[edit] -lh8-, -lh9-, -lha-, -lhb-, -lhc-, -lhe-
Dictionary sizes are 64, 128, 256, 512, 1024, 2048 Ki bytes respectively.
[edit] UNLHA32 extensions
UNLHA32.DLL uses its own method for testing purposes.
[edit] -lhx-
It uses 128-256 Ki bytes dictionary.
[edit] PMarc extensions
These compression methods are created by PMarc, an CP/M archiver created by Miyo. The archive usually has a .PMA extension.
[edit] -pc1-
PopCom compressed executable archive.
[edit] -pm0-
No compression method is applied to the source data.
[edit] -pm1-
[edit] -pm2-
[edit] -pms-
Used to indicate PMarc self-extracting archive.
[edit] LArc extensions
LArc uses the same file format as .LZH, but was written by Kazuhiko Miki, Haruhiko Okumura, Ken Masuyama, with extension name '.LZS'.[3]
[edit] -lzs-
It supports 2KiByte sliding window, with support of maximum 17 bytes of matching length.
[edit] -lz2-
It is similar of -lzs-, except dictionary size and match length can be changed.
[edit] -lz3-
[edit] -lz4-
No compression method is applied to the source data.
[edit] -lz5-
It supports 4KiByte sliding window, with support of maximum 17 bytes of matching length.
[edit] -lz7-
[edit] -lz8-
[edit] LHICE/ICE
There are copies of LHICE marked as version 1.14. According to Okumura, LHICE is not written by Yoshi.[4]
[edit] See also
[edit] External links
- A history of data compression in Japan
- LHA Notes Document about LHA.
- jLHA - LHA library for Java
- LHA for Unix (Japanese)
- Hacking Data Compression Lesson 11 LZH, LZARI, and LZB
- Micco's page home of UNLHA32.DLL
- NSRL Magic File contains PMarc info.
|
|